Я изучаю обработку сигнала, и у меня есть вопрос о возврате сигнала:
void (*sighandler_t)(int);
Я знаю, что это указатель на предыдущую функцию обработчика сигнала, но я не знаю, что означает параметр "(int)".
Большое спасибо!
Параметр int для обработчика сигнала - это номер сигнала, вызвавшего вызов этого обработчика. Это полезно, если к одной и той же функции обработчика сигналов подключено более одного сигнала.
int
(int) является частью типа;тип sighandler_t - это указатель на функцию, которая возвращает void и принимает int в качестве параметра.
(int)
sighandler_t
void
Функция обработчика сигнала имеет подпись, которую вы разместили.Когда ваша программа получает сигнал, система вызывает ваш обработчик сигнала и отправляет ему сигнал для обработки в качестве параметра, чтобы вы могли иметь общий обработчик для нескольких типов сигналов, например.
Это не совсем указатель на предыдущую функцию.Это объявление типа указателя на функцию.
Этот указатель будет работать для любой функции с возвращаемым типом void и параметром int.
Подробнее о том, как работает этот синтаксис, можно узнать здесь
http://www.cprogramming.com/tutorial/function-pointers.html