将管道连接到网络插座

时间:2014-08-14 10:51:35

标签: c tcp pipe

在C程序中,假设我正在运行子进程以ssh进入IMAP服务器:

ssh -q -C user@example.com /usr/bin/imapd ./Maildir 2> /dev/null

然后我可以使用该进程进出管道。现在我想要curl连接到SSH隧道(为了使用它的高级函数与IMAP服务器通信),但curl只接受network socket,而不是一对管道。那么如何将我的管道传递到插座呢?

我理想地寻找一种不仅适用于POSIX而且适用于Windows的解决方案。

1 个答案:

答案 0 :(得分:0)

试试这个:

mkfifo ~/ssh_in
mkfifo ~/ssh_out
ssh -q -C user@example.com /usr/bin/imapd ./Maildir < ~/ssh_in > ~/ssh_out 2> /dev/null
nc -l 143 < ~/ssh_out | tee ~/ssh_in

现在您的 curl 应该可以与 localhost:143

进行对话

顺便说一下,你没有&#34; SSH隧道。&#34;

不幸的是,似乎没有使用 Cygwin FIFO