Linux   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux下程序启动后后台运行实现大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

关于linux下的程序运行很简单,将源码编译成二进制(假设为proram)文件后直接在命令行运行即可, root#./program 如果需要后台运行,即不占用当前终端,这在嵌入式linux显得十分有必要,因为一般嵌入式linux只有一个终端,通过rs232连接到电脑上,使用SercureCRT或者其他软件来与linux交互,如果当前终端被程序占用,那么就不能进行其他操作(此处不考虑可以通过网络访

关于linux下的程序运行很简单,将源码编译成二进制(假设为proram)文件后直接在命令行运行即可,
root#./program
如果需要后台运行,即不占用当前终端,这在嵌入式linux显得十分有必要,因为一般嵌入式linux只有一个终端,通过rs232连接到电脑上,使用SercureCRT或者其他软件来与linux交互,如果当前终端被程序占用,那么就不能进行其他操作(此处不考虑可以通过网络访问方式,例如Telnet),让程序后台运行即可,加上符号&:
root#./program &
这种方式可行,但是还有一种方式更好,在代码中实现可以后台运行。
代码实现方式如下:

void daemonize(void) { signal(SIGTTOU,SIG_IGN); signal(SIGTTIN,SIG_IGN); signal(SIGTSTP,SIG_IGN); if (0 != fork()) exit(0); if (-1 == setsid()) exit(0); signal(SIGHUP,SIG_IGN); if (0 != fork()) exit(0); if (0 != chdir("/")) exit(0); } int main(int argc,char *argv[]) { int o; while(-1 != (o = getopt(argc,argv,"hD"))) { switch(o) { case D: daemonize(); break; default: show_help(); return -1; } } do_something(); }

这样生成的二进制文件(如program)只要在命令行加入参数 D即可后台运行:
root#./program -D
如果不加参数D,那么就占用当前终端,daemonize()这段代码是我直接借用开源项目lighttpd(开源Web服务器软件),并且在自己的相关开发程序中使用。

关于daemonize()这段代码的分析,提供一个网上的介绍链接
https://blog.csdn.net/jiange_zh/article/details/50483099
详解介绍截图如下:

linux下程序启动后后台运行实现

大佬总结

以上是大佬教程为你收集整理的linux下程序启动后后台运行实现全部内容,希望文章能够帮你解决linux下程序启动后后台运行实现所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: