单元测试kill命令

时间:2016-08-08 16:33:00

标签: c linux unit-testing posix kill

所以我想做一些坏事和肮脏的事情;)

我想在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函数,我将以相同的错误结束。

1 个答案:

答案 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