一尘不染

如何在带有参数的linux中的C代码中执行外部程序?

linux

我想在C代码中执行另一个程序。例如,我要执行命令

./foo 1 2 3

foo是存在于同一文件夹中的程序,并且1 2 3是参数。 foo程序创建一个文件,该文件将在我的代码中使用。

我该怎么做呢?


阅读 302

收藏
2020-06-02

共1个答案

一尘不染

使用一种简单的方法system()

#include <stdlib.h>
...
int status = system("./foo 1 2 3");

system()将等待foo完成执行,然后返回一个状态变量,您可以使用该变量检查例如exitcode(命令的exitcode乘以256,因此将system()的返回值除以该值即可得到实际的exitcode:)int exitcode = status / 256

的联机帮助页wait()(在man 2 waitLinux系统上的第2部分)中列出了可用于检查状态的各种宏,最有趣的是WIFEXITEDand WEXITSTATUS

另外,如果您需要读取foo的标准输出,请使用popen(3),它返回一个文件指针(FILE *);这样,与命令的标准输入/输出进行交互就等于从文件中读取或写入文件。

2020-06-02