Так что я пытаюсь сделать что-то плохое и грязное;)Блока команда тестирования убить
Я хочу назвать убийство (0, SIGKILL) в моих проверках UnitTest убить дочерние процессы, я начал с этим тестом.
ck_assert_int_eq(magic(13), 13); //<- success, but I cannot stop magic now
если я
ck_assert_int_eq(kill(0, SIGKILL), 0);
я получаю "тест: (после этого момента) Принимаемый сигнал 9 (Killed)"
Есть пути вокруг него? kill (0, SIGKILL) также выполняется в реальном коде, поэтому я думаю, что если попытаюсь вызвать функцию разрушения из своего теста, я собираюсь завершить ту же ошибку.
Я не понимаю, что ожидаемое поведение. – a3f
Не используйте SIGKILL, если вы можете избежать этого. Когда вы его используете, не используйте первый аргумент нуля и используйте 'fork()' для создания ребенка и чтобы ребенок совершил самоубийство. Если вы все еще должны тестировать 'kill (0, SIGKILL)', вы все равно используете 'fork()', но вы должны изолировать дочерний элемент от его исходной группы процессов ('setsid()' или, возможно, 'setpgrp()' или 'setpgid() '). –
@ a3f Я хочу инициализировать магию, проверить код возврата из инициализации, а затем убить его. – Oreols