【问题标题】:How to write a GUI wrapper around a command line program in *C*?如何在 *C* 中围绕命令行程序编写 GUI 包装器?
【发布时间】:2009-12-06 13:34:52
【问题描述】:
系统();能够在 PATH 中调用程序。如何发送标准输入读取例如GUI 上的文本字段到命令行程序(例如 ftp、sftp ...)并带有自己的提示?
System() 等待程序退出,但 ftp 没有用户交互。也无法创建批处理文件,因为它在运行时只读取一次,在启动时。
如果可能,请用 C for UNIX 编写解决方案,如果不是任何其他语言。
【问题讨论】:
标签:
c++
c
objective-c
system
stdin
【解决方案1】:
这是可能的,但不是那么容易。你可以看看Expect。它是一种自动与非 GUI 工具交互的编程语言。 Expect 库已嵌入到 Python 等其他东西中,因此我认为您可以将其嵌入到您的 C 代码中。
【解决方案2】:
我知道的最简单的方法是使用forkpty() 和exec()。 forkpty() 返回一个文件描述符,该描述符被重定向到程序 stdin 和 stdout。写入文件描述符的任何内容都是程序的输入。程序写入的任何内容都可以从文件描述符中读取。