2个问题:
1)是否有任何Linux / Posix API可以知道进程是否已被调用为后台进程?
linux> myprogram &
代码可以吗myprogram
检测到它已被调用在后台运行(通过&
) ?
2)是否有任何Linux / Posix API可以使进程在后台运行,即使它已作为前台进程启动? IE。以某种方式在运行时从 shell 中“分离”..(要么完全与 shell 分离,要么作为 shell 的后台进程运行)。
linux> myprogram
**** starting myprogram as a background job ****
linux>
shell 提示应该立即返回给我,因为myprogram
已脱离 shell 并在后台运行
1)有两种方法可以知道一个进程是否在后台
有一个信号处理程序SIGTTIN /SIGTTOUT
并根据哪个信号处理程序(stdin/stdout)进行非阻塞读/写。
检查进程组并将其与终端匹配getpgrp() == tcgetpgrp(STDOUT_FILENO)
您将需要重复检查,因为该进程可以随时在前台或后台运行。
2)有一个daemon
函数将进程置于后台。建议将应用程序打印重定向到syslog
或守护进程时的其他一些文件。
if (daemonize) {
//redirect all prints to syslog or some other logfile
daemon(0, 0);
}
where daemonize
可以作为应用程序是否进入后台的参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)