所以我想做一些坏事和肮脏的事情;)
我想在check unittest中调用kill(0,SIGKILL)来杀死我用这个测试启动的子进程。
ck_assert_int_eq(magic(13), 13); //<- success, but I cannot stop magic now
如果我这样做
ck_assert_int_eq(kill(0, SIGKILL), 0);
我得到&#34;测试:(在此之后)收到信号9(被杀)&#34;
周围有办法吗? kill(0,SIGKILL)也在实际代码中完成,所以我想如果我尝试从我的测试中调用destroy函数,我将以相同的错误结束。
答案 0 :(得分:4)
int kill(pid_t pid,int sig)
如果pid等于0,则sig被发送到进程组中的每个进程 呼叫过程。
资料来源:man 2 kill
您需要致电kill( child_pid, SIGKILL)
,因为child_pid == 0
会杀死父+孩子。
pid_t fork(void);
成功完成后,fork()将向子进程返回0并且 应将子进程的进程ID返回给父进程。都 进程应继续从fork()函数执行。否则,-1 应退回父进程,不得创建子进程, 和errno应设置为表示错误。
资料来源:man 3 fork