linux – 检测后台 *** 作

linux – 检测后台 *** 作,第1张

概述在C中,在“后台模式”中调用检测程序的方法是什么? 我有一个程序,我想以交互方式或在后台启动. 如何检测我不应该从stdin读取并以“Stopped:tty input”状态结束? 我应该测试stdin是否关闭?我怎样才能做到这一点 ? 编辑: isatty似乎是一个好主意,但是如果stdin是管道端,而不是tty会发生什么? 在控制终端的文件描述符上使用 tcgetpgrp()函数(例如STDI 在C中,在“后台模式”中调用检测程序的方法是什么?
我有一个程序,我想以交互方式或在后台启动.

如何检测我不应该从stdin读取并以“Stopped:tty input”状态结束?

我应该测试stdin是否关闭?我怎样才能做到这一点 ?

编辑:
isatty似乎是一个好主意,但是如果stdin是管道端,而不是tty会发生什么?

解决方法 在控制终端的文件描述符上使用 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 */}
总结

以上是内存溢出为你收集整理的linux – 检测后台 *** 作全部内容,希望文章能够帮你解决linux – 检测后台 *** 作所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1018333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存