如何在* C *中编写命令行程序的GUI包装器?

时间:2009-12-06 13:34:52

标签: c++ c objective-c system stdin

系统();能够在PATH中调用程序。如何从例如发送stdin读取GUI上的文本字段到命令行程序,如ftp,sftp ...有自己的提示?
System()等待程序退出,但ftp没有用户交互。它也不可能创建一个批处理文件,因为它在运行时只在启动时读取一次。

如果可能,请在UNIX的 C 中编写解决方案,如果没有其他语言的话。

2 个答案:

答案 0 :(得分:2)

有可能,但不是那么容易。您可以查看Expect。它是一种编程语言,可以自动与非gui工具进行交互。 Expect库已嵌入到Python等其他内容中,因此我认为您可以将其嵌入到C中的代码中。

答案 1 :(得分:1)

我知道的最简单方法是将forkpty()exec()一起使用。 forkpty()返回一个文件描述符,该描述符被重定向到程序stdin和stdout。无论写入文件描述符是什么,都是程序的输入。无论程序写入什么都可以从文件描述符中读取。