我正在尝试编写一个集成测试,以测试两个单独程序之间的交互。程序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的杂散进程。
我想念什么?