我想在C代码中执行另一个程序。例如,我要执行命令
./foo 1 2 3
foo是存在于同一文件夹中的程序,并且1 2 3是参数。 foo程序创建一个文件,该文件将在我的代码中使用。
foo
1 2 3
我该怎么做呢?
使用一种简单的方法system():
system()
#include <stdlib.h> ... int status = system("./foo 1 2 3");
system()将等待foo完成执行,然后返回一个状态变量,您可以使用该变量检查例如exitcode(命令的exitcode乘以256,因此将system()的返回值除以该值即可得到实际的exitcode:)int exitcode = status / 256。
int exitcode = status / 256
的联机帮助页wait()(在man 2 waitLinux系统上的第2部分)中列出了可用于检查状态的各种宏,最有趣的是WIFEXITEDand WEXITSTATUS。
wait()
man 2 wait
WIFEXITED
WEXITSTATUS
另外,如果您需要读取foo的标准输出,请使用popen(3),它返回一个文件指针(FILE *);这样,与命令的标准输入/输出进行交互就等于从文件中读取或写入文件。
popen(3)
FILE *