Предоставление / передача аргумента обработчику сигнала

Могу ли я предоставить / передать какие-либо аргументы обработчику сигнала?

/* Signal handling */
struct sigaction act;
act.sa_handler = signal_handler;
/* some more settings */

Теперь обработчик выглядит так:

void signal_handler(int signo) {
    /* some code */
}

Если я хочу сделать что-то особенное, например, удалить временные файлы, могу ли я предоставить эти файлы в качестве аргумента этому обработчику?

Редактировать 0: Спасибо за ответы. Обычно мы избегаем / не рекомендуем использование глобальных переменных. И в этом случае, если у вас огромная программа, что-то может пойти не так в разных местах, и вам может потребоваться большая очистка. Почему API был разработан таким образом?

57
задан Mat 7 August 2011 в 06:05
поделиться