hig*_*guy 2 c unix ssh bash pipe
我尝试在ssh上构建一个管道链.
mkfifo localpipe; 并在远程机器上 mkfifo remotepipe;
cat localpipe | ssh -q einstein "cat > remotepipe"
使用echo "input;" > localpipe我可以将输入发送到从remotepipe读取的程序.但之后,remotepipe,localpipe和ssh-connection将被关闭.有没有办法保持localpipe和ssh打开但关闭remotepipe,我需要为了使远程端的程序处理它的输入?
如果这对cat或其他一些unix命令不起作用,我可以在C中写一个短猫替换来实现这个目的吗?
localpipe也可能已关闭但我想保持ssh打开速度的原因.
该echo ... > pipe命令在完成写入后关闭管道,这会导致cat它的读取终止,然后ssh连接也将关闭.尝试使用文件描述符打开管道,使其保持打开状态,如
exec 3>localpipe
# then ...
echo input\; >&3
Run Code Online (Sandbox Code Playgroud)
管道应保持打开,直到您关闭文件描述符exec 3>&-.