我有一个程序, sink.py
,我想运行在一个bash脚本( run.sh
)。 sink.py
需要stdin的数据才能完成工作。
我想从另一个程序source.py
将数据提供到sink.py
以下pipe道工作正常:
python source.py | python sink.py
不过,我期待exec sink.py
,以便接pipeshell。 我想这样做是因为我从一个进程pipe理器(supervisord)启动了这个bash脚本,而sink.py
包含了所有的信号处理代码。 所以理想情况下我可以这样做:
python source.py | exec python sink.py
但是,这似乎并没有工作 – ps
显示run.sh
继续作为sink.py
的父项sink.py
。
我尝试使用像这样的进程replace:
exec python sink.py < <(python source.py)
这几乎是完美的,除了bash脚本似乎成为一个“僵尸”,这可能不是一件好事:
PID TTY STAT TIME COMMAND 1042 pts/7 S 0:00 python sink.py 1046 pts/7 Z 0:00 [run.sh] <defunct>
另外一个想法是将source.py
的输出保存到一个临时文件中,然后将该文件导入到sink.py
。 这几乎工作,除了我没有办法删除临时文件,一旦我exec sink.py
有没有什么好方法可以做到这一点?