c - C中的popen()和system()有什么区别

标签 c system popen

我想在我的 C 代码中执行一个二进制文件。执行哪个更好? popen()system()

编辑:我尝试使用system,但执行的进程似乎最后卡住了,没有返回到我的代码。

有什么建议吗?

谢谢

最佳答案

popen() 让您可以控制进程的输入或输出文件流。 system() 没有。如果您不需要访问进程的 I/O,可以使用 system() 来简化操作。

system() 在 C89 和 C99 中; popen() 仅适用于 Posix(尽管 Windows API 也有一个)。

这两个函数都调用某种形式的 shell 来执行命令(例如 Linux 上的 /bin/sh,可能还有 cmd.exe在 Windows 上)。如果你想直接执行一个可执行文件并且你在 Posix 上,你还可以查看 exec* - 函数族与 fork() 的结合(因为 exec() 替换当前进程)。

关于c - C中的popen()和system()有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8538324/

相关文章:

c - 如何输入n行每行m个字符的字符串,其中可能包含空格作为字符?

linux - 调用系统调用的不同方式

android - 意外的android系统调用使滚动图形卡顿的流畅显示

linux - linux单个目录下文件太多怎么办?

python - 为什么带有 shell=True 的 subprocess.Popen() 在 Linux 和 Windows 上的工作方式不同?

sqlite3_exec中的回调函数(C API)

c++ - 我可以以任何方式将数据分配给从 OpenCV 对象取消引用的双函数返回检索吗?

c - 从文件读取 - 段错误(核心转储)

python - 从另一个 Python 进程调用操作系统的 Python 可执行文件

python - 获取在另一个终端中执行的 python 进程的状态