如何正确杀死使用execl启动的程序

时间:2016-02-26 18:43:17

标签: c linux firefox fork execl

我编写了一个使用fork创建子进程的程序。在子进程中,我使用execl,它使用firefox打开一个本地html页面:

execl( "/usr/bin/firefox", "/usr/bin/firefox","/home/xyz/t/webpages/page1.html", (char*)NULL);

在睡眠5秒后的父进程中,我向子进程发送SIGTERM信号:

sleep(5);
kill(browser_pid,SIGTERM);

编译和执行后一切正常。但是当我运行程序超过5次迭代时,firefox开始表现不正常,并显示一个窗口要么重置firefox要么在安全模式下打开: enter image description here

当我手动关闭html页面而不将SIGTERM信号发送到进程并使用浏览器上的关闭按钮时,它可以完美地进行任意次数的迭代。

我的程序应该每5秒刷新一次网页,以显示定期写入的新内容。 我怎么能以编程方式做同样的事情?

2 个答案:

答案 0 :(得分:0)

尝试使用SIGINT代替SIGTERM

答案 1 :(得分:0)

删除~/.mozilla文件夹解决了问题。