2011-09-06 2 views
1

Я пытаюсь понять функции sigsetjmp() и siglongjmp(). В man-страницах указано, что sigsetjmp() сохраняет контекст, а siglongjmp() восстанавливает контекст. Мой вопрос в том, будут ли они следить за указателями стека и значениями счетчика программ?Вопрос о sigsetjmp и siglongjmp

Любые ссылки на дополнительные ресурсы приветствуются.

+0

Разве это не спрашивает, вернется ли вызов функции, когда это будет сделано? – ikegami

ответ

1

Да, он заботится обо всех контекстах. То, что это точно, зависит от реализации.

Обязательно прочтите как spec, так и страницы руководства вашей реализации, и будьте осторожны с этими функциями, они сложны.

+0

Можете ли вы рассказать мне, что зависит от реализации? На всех платформах SP и ПК будут сохранены, верно? Кроме того, можете ли вы дать мне пример различий между платформами? – CuriousCoder

+0

Не все процессоры обязательно имеют указатель стека или счетчик программ (хотя я не знаю конкретных примеров). Стандарты C++ (и C) не упоминают эти вещи, потому что они «детали реализации». AFAIK, ни один из этих стандартов не требует наличия стека. – Mat

2

Указатель стека и счетчик программ являются частью контекста (который вы можете представить как, по существу, состояние регистров процессора).

Смежные вопросы