@[toc]
一、如何让程序在后台运行
在之前的章节中,如果要运行程序,在命令提示行下输入程序名后回车,程序被执行,然后等待程序运行完成,在程序运行的过程中,也可以用Ctrl+c中止它。
在实际开发中,我们需要让程序在后台运行,没有界面,没有用户输入数据,例如socket服务端程序book250。
如果想让程序在后台运行,有两种方法。
1、加“&”符号
如果想让程序在后台运行,执行程序的时候,命令的最后面加“&”符号。
如:
./book250 &
程序就在后台运行了。
![a4e5b054c215dd7bbafc115b4f6b528e.png](https://img-blog.csdnimg.cn/img_convert/a4e5b054c215dd7bbafc115b4f6b528e.png)
在后台运行的程序,用Ctrl+c无法中断,并且就算终端退出了,程序仍在后台运行。
如果终端退出了,后台运行的程序将由系统托管。
![974300c09bb7203e24010cbec191c534.png](https://img-blog.csdnimg.cn/img_convert/974300c09bb7203e24010cbec191c534.png)
在第一张图中,book250的父进程是12178,第二张图中,book250的父进程是1。
为了不影响接下来的学习,用killall book250指令让book250程序退出。
![697b5e76b02baf788e2c1c5c30a79697.png](https://img-blog.csdnimg.cn/img_convert/697b5e76b02baf788e2c1c5c30a79697.png)
2、采用fork
另一种方法是采用fork,主程序执行fork,生成一个子进程,然后父进程退出,留下子进程继续运行,子进程将由系统托管。
在book250的main函数后增加以下代码:
if (fork()>0) return 0;
重新编译后执行book250&#x