如何正确终止使用 execl 启动的程序
How to correctly kill a program which is started using 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 开始表现不稳定,并显示 window 以重置 firefox 或在安全模式下打开:
当我手动关闭 html 页面而不向进程发送 SIGTERM 信号并使用浏览器上的关闭按钮时,它可以完美运行任意次数的迭代。
我的程序应该每 5 秒刷新一次网页,以显示正在定期编写的新内容。
我怎样才能以编程方式做同样的事情?
尝试 SIGINT
而不是 SIGTERM
。
删除 ~/.mozilla
文件夹解决了问题。
我编写了一个使用 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 开始表现不稳定,并显示 window 以重置 firefox 或在安全模式下打开:
当我手动关闭 html 页面而不向进程发送 SIGTERM 信号并使用浏览器上的关闭按钮时,它可以完美运行任意次数的迭代。
我的程序应该每 5 秒刷新一次网页,以显示正在定期编写的新内容。 我怎样才能以编程方式做同样的事情?
尝试 SIGINT
而不是 SIGTERM
。
删除 ~/.mozilla
文件夹解决了问题。