从gui前端启动控制台应用程序

时间:2011-09-04 14:54:29

标签: c linux user-interface

你能告诉我最好的办法吗?我可以使用popen,但每次需要启动我的应用程序时都需要为参数创建一个大缓冲区。我可以使用fork + execv,但是然后程序写入stdout并且我无法读取输出(在文本字段中显示它)还有其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

  

你能告诉我最好的办法吗?我可以使用popen,但每次需要启动我的应用程序时都需要为参数创建一个大缓冲区。

popen()是一种很好的标准方式,如果您只需要与子应用程序进行单向通信,例如写入stdin或从stdout读取,但不能同时阅读。{/ p >

使用C时,需要对琴弦感到舒适。使用a string library for C来简化字符串操作很有帮助,例如在您的情况下使用字符串连接,因为标准C库只提供基本的低级函数。

  

我可以使用fork + execv,但是程序写入stdout并且我无法读取输出(在文本字段中显示它)

popen()为您提供指向子程序FILE*的{​​{1}}指针,您可以使用标准CI / O函数fread()或{{3}从中读取其输出}。同样,标准C库fscanf()并且需要熟悉它。

  

还有其他解决方案吗?

您可以让子程序写入文件然后读取该文件,但无论如何您需要能够构造命令行字符串并读取该文件。