我正在尝试从C程序(OS X)控制ftp客户端。我做了fork和execve - 进程启动好了。问题是管道 - 我可以发送命令到ftp客户端进程并从中得到反馈就好了(如果我发送“帮助\ n”我得到回来帮助输出)但我从来没有得到管道是“ftp>”提示。有什么想法吗?
伊万
答案 0 :(得分:3)
如果stdin / stdout是一个终端或其他东西,你的ftp客户端可能表现不同(许多程序都这样做,一开始C库以不同的方式缓冲......)如果你想控制它,搜索关于伪终端的信息,这有点太技术性,不能在这里解释。 (首先看一下像expect
这样的程序,你可能不必写你的。)
答案 1 :(得分:1)
程序可以检查stdin
以查明它是终端还是管道。在您的情况下,FTP程序可能会这样做(例如,知道它是否可以使用转义序列来呈现进度条或提供命令行编辑)。
如果您确实需要提示,则必须查看模拟控制台的PTYs(伪终端)。
答案 2 :(得分:0)
疯狂猜测:不是“ftp>”提示写入STDERR?