C中管道控制的ftp客户端

C中管道控制的ftp客户端,c,fork,pipe,C,Fork,Pipe,我试图从C程序(OSX)控制ftp客户端。我做了fork和execve-进程启动正常。问题在于管道-我可以向ftp客户端进程发送命令并从中获得反馈(如果我发送“help\n”,我将返回帮助输出),但管道中从未出现“ftp>”提示。有什么想法吗 Ivan胡乱猜测:“ftp>提示不是写入了STDERR吗?如果stdin/stdout是终端或其他东西,您的ftp客户端的行为可能会有所不同(很多程序都会这样做,首先C库会以不同的方式进行缓冲…),如果您想控制它,请搜索有关伪终端的信息,这太技术化了,这里

我试图从C程序(OSX)控制ftp客户端。我做了fork和execve-进程启动正常。问题在于管道-我可以向ftp客户端进程发送命令并从中获得反馈(如果我发送“help\n”,我将返回帮助输出),但管道中从未出现“ftp>”提示。有什么想法吗


Ivan

胡乱猜测:“ftp>提示不是写入了STDERR吗?

如果stdin/stdout是终端或其他东西,您的ftp客户端的行为可能会有所不同(很多程序都会这样做,首先C库会以不同的方式进行缓冲…),如果您想控制它,请搜索有关伪终端的信息,这太技术化了,这里无法解释。(首先看一下像expect这样的程序,你可能不需要编写你的程序)。

一个程序可以检查stdin以确定它是终端还是管道。在您的例子中,FTP程序可能会这样做(例如,了解它是否可以使用转义序列来呈现进度条或提供命令行编辑)


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

您可以查看命令(程序),如ftpget、ftpput、curl或wget等,它们更适合于非交互式工作,并且会为您节省大量的麻烦-除非您只是在编写一个完全交互式ftp的前端。啊,编程的记忆(使用
期望
)到老式(调制解调器)ISP的登录对话。。。