如何从C程序向Linux命令发送命令

时间:2017-06-21 14:39:04

标签: c linux

我正在尝试从C程序向Linux命令行发送命令,有一部分我不知道该怎么做。

例如在我的C代码中我有

system("raspistill -o image.jpg");

我希望能够做的是在"图像"的末尾添加一个数字。并在每次程序运行时递增它,但是如何将变量n传递给只查找system()的{​​{1}}函数?

我尝试了这个,但它不起作用:

const char

我已经尝试过搜索这个并且没有找到任何关于如何添加变量的信息。抱歉,这个菜鸟问题。

2 个答案:

答案 0 :(得分:2)

char fileName[80];

sprintf(fileName, "raspistill -o image%d.jpg",n);
system(filename);

答案 1 :(得分:0)

首先,String是一个char数组,所以声明(我想你知道,只是为了强调):

char command[32]; 

因此,简单的解决方案将是:

sprintf(command, "raspistill -o image%d.jpg", n);

然后致电system(command);。这正是您所需要的。

编辑:

需要程序输出,请尝试popen

char command[32]; 
char data[1024];
sprintf(command, "raspistill -o image%d.jpg", n);
//Open the process with given 'command' for reading
FILE* file = popen(command, "r");
// do something with program output.
while (fgets(data, sizeof(data)-1, file) != NULL) {
    printf("%s", data);
}
pclose(file);

资料来源:C: Run a System Command and Get Output?

http://man7.org/linux/man-pages/man3/popen.3.html