从一个进程写一行,从另一个进程中消耗一行

时间:2017-02-17 12:02:47

标签: python bash sh named-pipes fifo

我有一个来自python的循环,它将代理写入文件,每行一个。稍后使用curl -x $PROXY通过cat proxies.txt从bash脚本中使用该文件。

这种方法是否可以通过同时启动这两个脚本来改进,并且只有当python写入新行/新代理时才使用cat可以使用的命名管道?

在我看来,我会写一些像

这样的东西
f = open('/tmp/proxies', 'w') # but this call is blocking!
for proxy in ...:
    f.write(proxy)

for PROXY in $(cat /tmp/proxies); do curl -x $PROXY example.com; done

1 个答案:

答案 0 :(得分:1)

关于阻止FIFO的许多评论;我不会重复它们,但主要问题是:当没有进程读取时,写入过程被阻止。

您可能正在寻找的代码是这样的:

#!/bin/bash
python the_python_script.py &  # start in the background
tail -f /tmp/proxies| while read px; do 
    curl -x $px example.com
done

当python脚本死掉时,应该有一些逻辑来终止bash脚本。