gpt4 book ai didi

c++ - popen 与来自 C++ 的系统调用

转载 作者:行者123 更新时间:2023-11-30 01:20:02 24 4
gpt4 key购买 nike

在我的 C++ 程序中,我需要执行一个 bash 脚本。然后我需要返回在我的 C++ 程序中运行脚本获得的结果。我有两种可能性:

1. use system(script.sh). In script.sh I redirect the output in a file which is processd after I return to the c++ program.
2. use popen

考虑到从 script.sh 返回的输出可能很大 (100 M),我感兴趣的是首选哪种方法。谢谢。

最佳答案

当使用 system 时,父进程会被阻塞,直到子进程终止。子进程将以全性能运行。

popen 将启动子进程,但不会等到它结束。所以父进程可以在子进程运行时继续做任何它想做的事情,例如它可以读取子进程的输出。父进程可以决定是否要从子进程的输出管道中读取阻塞或非阻塞,这取决于父进程必须做多少其他事情。 child 将并行运行并将其输出写入管道。如果父进程没有从管道中读取并且达到了管道的内存限制,它可能会在写入时被阻塞。所以父进程应该继续读取输出。

system 方法稍微简单一些。但是 popen 使您可以在进程仍在运行时读取进程的输出。而且您不需要额外的文件(空间)。所以我会使用 popen

关于c++ - popen 与来自 C++ 的系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19973109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com