为什么我的程序未被系统调用另一个程序的pkill杀死?

时间:2019-01-10 17:08:01

标签: c linux multithreading signals

我正在尝试编写一个集成测试,以测试两个单独程序之间的交互。程序A是一个实用程序,它生成供程序B使用的数据,因此我要通过调用来启动程序A

system("ProgramA params");

这部分工作正常,因此程序B将运行,然后,在数据分析完成之后,我想终止程序A,所以我愿意

system("pkill -2 ProgramA");

此调用返回0,因此集成测试结束,但是在我运行时

pgrep ProgramA

在终端上,它显示一个PID,表明该进程仍在运行。

此外,如果我从命令行运行程序A,则在我Ctrl-C发送SIGINT时,signalHandler会执行,这表明signalHandler至少有时会捕获信号。

程序p使用主线程正在使用的pthread库是多线程的

signal(SIGINT, *signalHandler) 

捕获中断,所有子进程都阻止所有信号。

是的,我在集成测试之前运行pgrep,以确保没有运行程序A的杂散进程。

我想念什么?

0 个答案:

没有答案