bash:将数据导入exec'd命令

我有一个程序, 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

有没有什么好方法可以做到这一点?