微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

shell – 如何检测前台进程正在等待UNIX中的输入?

我必须创建一个脚本(ksh或perl)来启动一定数量的并行作业(另一个脚本),每个脚本在一个单独的会话中作为前台进程运行.另外,我开始监视作业,必须确定是否有任何脚本需要来自运算符的输入,并在必要时切换到相应的会话.
我的问题是我没有找到一个很好的方法来确定进程是否期望输入.对于后台进程,它非常简单:进程状态“停止”,可以使用’ps’命令轻松检查.在前台处理的情况下,这不起作用.
到目前为止,我尝试使用dbx或truss附加到进程,看看它是否挂在’read’上,但这种方法看起来太重了.
你能建议更好的解决方案吗? Perl,shell,C,Java等……只要它是标准的并且不需要额外的第三方或特定于操作系统的东西来安装就可以了.

谢谢.

解决方法

你问的是不可能的,至少不可靠.该过程可能使用 select或其他轮询方法而不是阻止读取调用.你无法知道它是在等待运算符输入还是忙于做其他事情,并且通常它们可能都是(在响应运算符输入的同时在后台做事).

程序发出等待运算符输入信号的正常方法是打印提示.因此,如果会话自上次输入输入后显示提示,则应认为该会话处于活动状态.

如果你的程序没有这种方式,你需要找到一些其他程序特定的方法来知道这些进程正在等待输入.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐