2017-06-21 125 views
-1

我想從C程序向Linux命令行發送命令,並且有一部分我不知道該怎麼做。如何從C程序向Linux命令發送命令

舉例來說,在我的C代碼,我有

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

我想做什麼就能做的就是添加一個數字的「形象」結束,每個程序運行時間增加了,但如何我可以傳遞一個變量nsystem()函數只能查找const char

我試過,但沒有奏效:

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

我試過這個搜索,並沒有發現有關如何將變量添加到任何東西。對於noob問題抱歉。

+2

使用'sprintf'構建**字符串**,然後將其傳遞給'system'。 –

+3

[c string和int concatenation]可能重複(https://stackoverflow.com/questions/5172107/c-string-and-int-concatenation) –

回答

2
char fileName[80]; 

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

謝謝!這工作完美!我沒有意識到sprintf()可以這樣使用。 – Nate

0

首先,一個字符串是一個字符數組,所以聲明(我想你知道,只是強調):

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