我有一个程序,在读取给定流中的EOF时会自动退出(在以下情况下为stdin)。
现在,我想制作一个Shell脚本,该脚本创建一个命名管道并将程序的stdin连接到它。然后,脚本使用和(以及其他工具退出时自动生成EOF)多次写入管道。我面临的问题是,当第一个操作完成时,它会向管道发送EOF并退出程序。如果我使用类似的东西,那么我打算退出程序时无法发送EOF。我正在研究一种平衡的解决方案,但无济于事。
我已经找到了如何防止EOF以及如何手动发送EOF的方法,但是我无法将它们结合在一起。有什么提示吗? echo
cat
echo
tail -f
#!/bin/sh
mkfifo P
program < P & : # Run in background
# < P tail -n +1 -f | program
echo some stuff > P # Prevent EOF?
cat more_stuff.txt > P # Prevent EOF?
send_eof > P # How can I do this?
# fg
exec 3>P
会导致重击,为什么呢?