Тестовые примеры на C для WIFSIGNALED, WIFSTOPPED, WIFCONTINUED

Работать с WIFSIGNALED очень signal просто. Дочерний процесс signals может совершить самоубийство signal с помощью системного вызова waitpid kill(). Вы также можете проверить c наличие дампов ядра - их signals создают некоторые сигналы signals (SIGQUIT, IIRC); некоторые signal сигналы - нет (SIGINT).

Обработка signals WIFSTOPPED может быть сложнее. Самый c простой шаг, который нужно signals попробовать, - это снова signal отправить самому себе SIGSTOP signals с системным вызовом kill(). На signals самом деле, я думаю, это signals должно сработать. Обратите signals внимание, что вы можете проверить waitpid SIGTTIN, SIGTTOU и SIGTSTOP signal - я считаю, что они учитываются waitpid для WIFSTOPPED. (Также есть signal вероятность, что SIGSTOP waitpid работает нормально только signals тогда, когда отладчик отправляет waitpid его процессу через системный c вызов, не относящийся к POSIX, ptrace().)

Обработка waitpid WIFCONTINUED - это то, что, я c думаю, должен делать родитель; после waitpid того, как вы обнаружите, что signal процесс был остановлен, ваш waitpid вызывающий код должен продолжить c его, отправив ему сигнал signal SIGCONT (снова kill()). Ребенок waitpid не может доставить это сам; это signal было остановлено. Опять же, я signals не уверен, стоит ли беспокоиться signal о лишних морщинах - возможно.

c

signals

waitpid

2022-03-10T02:59:20+00:00