ftp客户端由C管道控制

时间:2010-03-01 09:31:26

标签: c fork pipe

我正在尝试从C程序(OS X)控制ftp客户端。我做了fork和execve - 进程启动好了。问题是管道 - 我可以发送命令到ftp客户端进程并从中得到反馈就好了(如果我发送“帮助\ n”我得到回来帮助输出)但我从来没有得到管道是“ftp>”提示。有什么想法吗?

伊万

3 个答案:

答案 0 :(得分:3)

如果stdin / stdout是一个终端或其他东西,你的ftp客户端可能表现不同(许多程序都这样做,一开始C库以不同的方式缓冲......)如果你想控制它,搜索关于伪终端的信息,这有点太技术性,不能在这里解释。 (首先看一下像expect这样的程序,你可能不必写你的。)

答案 1 :(得分:1)

程序可以检查stdin以查明它是终端还是管道。在您的情况下,FTP程序可能会这样做(例如,知道它是否可以使用转义序列来呈现进度条或提供命令行编辑)。

如果您确实需要提示,则必须查看模拟控制台的PTYs(伪终端)。

答案 2 :(得分:0)

疯狂猜测:不是“ftp>”提示写入STDERR?