
一、最直接的办法,用nohup命令,将程序挂到后台。
二、最方便的办法,用screen命令,起个虚拟终端,即使断开连接也能继续在后台跑。
三、最正常的思路,是将监听程序置为daemon,直接在后台运行,具体是监听程序启动后,fork一个子进程,将子进程setsid,然后父进程退出,实际 *** 作都放到子进程中。
当然程序里面的循环结构是肯定要的。
Ctrl + C 不是万能的。这个是由系统启动过程进行调用的。
只有当前正在运行中,且处于当前 CLI 交互状态的程序才能收到 Ctrl + C 。而且还需要这个程序确实可以响应 Ctrl + C 。
----------------------
这和平台无关,要看你具体如何启动这个程序的。
rc.X 里面的程序,应该有 start-stop-daemon 来控制。这个程序是不能提供 Ctrl + C 方式中断运行所运行的程序的,他会跟踪被运行的程序。一般情况下,他如果发现程序挂掉,他会重新启动程序。
---------------------
检查你的启动相关程序、脚本吧。嵌入式很有可能使用了不同的软件导致功能差异。
#include <unistd.h>#include <stdio.h>
void child_process()
{
while (true)
{
printf("I am child process\n")
}
}
int main()
{
pid_t pid = fork()
if (pid < 0)
{
printf("fork error! exit\n")
}
if (pid == 0) //子进程
{
child_process()
return 0
}
else //父进程
{
//父进程要执行的内容
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)