你能告诉我最好的办法吗?我可以使用popen,但每次需要启动我的应用程序时都需要为参数创建一个大缓冲区。我可以使用fork + execv,但是然后程序写入stdout并且我无法读取输出(在文本字段中显示它)还有其他解决方案吗?
答案 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()
并且需要熟悉它。
还有其他解决方案吗?
您可以让子程序写入文件然后读取该文件,但无论如何您需要能够构造命令行字符串并读取该文件。