我运行一个foreignprogram并将输出传递给outputcatcher.命令执行如下:
$foreignprogram | outputcatcher
我想在outputcatcher中处理foreignprogram的退出.当foreignprogram退出时,outputcatcher也会退出.是否有任何信号表明outputcatcher接收到了我可以处理的信号?我尝试过SIGINT,SIGTERM和SIGHUP,但到目前为止还没有运气.
如果重要的话,ouputcatcher是用PHP编写的,我用pcntl_signal()处理信号
解决方法:
我认为这两个项目是两个独立的项目.
foreignprogram无法知道谁将输出作为输入.除非你的实施是狡猾的.
但是如果你知道foreignprogram pid那么,
你可以做的一件事是你可以从outputcatcher每秒检查一次外来程序是否正在运行.如果没有运行,那么你可能想退出你的输出捕获器.
尝试每秒从outputcatcher发送信号0并检查返回值.
我不知道如何在PHP中执行此操作.但我认为在bash中也会如下所示.
kill -s 0 foreignpgram_pid
这将检查foreignpgram_pid是否正在运行.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。