我有一个程序,我想以交互方式或在后台启动.
如何检测我不应该从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 – 检测后台 *** 作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)