linux – 检测后台操作
发布时间:2020-12-13 22:59:40 所属栏目:Linux 来源:网络整理
导读:在C中,在“后台模式”中调用检测程序的方法是什么? 我有一个程序,我想以交互方式或在后台启动. 如何检测我不应该从stdin读取并以“Stopped:tty input”状态结束? 我应该测试stdin是否关闭?我怎样才能做到这一点 ? 编辑: isatty似乎是一个好主意,但是如
在C中,在“后台模式”中调用检测程序的方法是什么?
我有一个程序,我想以交互方式或在后台启动. 如何检测我不应该从stdin读取并以“Stopped:tty input”状态结束? 我应该测试stdin是否关闭?我怎样才能做到这一点 ? 编辑: 解决方法
在控制终端的文件描述符上使用
tcgetpgrp() 函数(例如STDIN_FILENO或0表示stdin)来检查当前前台进程组是否等于您自己的进程组(从
getpgrp() 开始).但是,当您的程序在前景和后台之间移动时,前台进程组可能随时更改.例如,在调用tcgetpgrp()之后和测试之前,它可能会立即更改.因此,如果您打算采取任何行动,请记住这一点;它不是避免SIGTTIN的可靠方法.
#include <unistd.h> pid_t fg = tcgetpgrp(STDIN_FILENO); if (fg == -1) { /* stdin is not controlling terminal (e.g. file,pipe,etc.) */ } else if (fg == getpgrp()) { /* foreground */ } else { /* background */ } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |