Also versuche ich, etwas schlecht und schmutzig zu tun;)Unit-Tests Befehl kill
Ich will kill nennen (0, SIGKILL) in meinen Scheck Unittest untergeordnete Prozesse zu töten ich mit diesem Test gestartet.
ck_assert_int_eq(magic(13), 13); //<- success, but I cannot stop magic now
wenn ich
ck_assert_int_eq(kill(0, SIGKILL), 0);
ich "Test: (nach diesem Punkt) Received Signal 9 (getötet)"
Gibt es Möglichkeiten, um ihn herum? Kill (0, SIGKILL) auch im eigentlichen Code getan, so denke ich, wenn ich versuche, Zerstörung Funktion von meinem Test zu nennen, werde ich mit dem gleichen Fehler enden.
Ich verstehe nicht, was das erwartete Verhalten ist. – a3f
Verwenden Sie SIGKILL nicht, wenn Sie es vermeiden können. Wenn Sie es verwenden, verwenden Sie kein erstes Argument von Null und verwenden Sie 'fork()', um ein Kind zu erstellen und das Kind Selbstmord begehen zu lassen. Wenn Sie "kill (0, SIGKILL)" noch testen müssen, verwenden Sie immer noch 'fork()', aber Sie müssen das Kind von seiner ursprünglichen Prozessgruppe isolieren ('setsid()' oder vielleicht 'setpgrp()' oder 'setpgid() '). –
@ a3f Ich möchte Magie initialisieren, den Rückkehrcode von der Initialisierung überprüfen und dann beenden. – Oreols