2011-06-25 144 views
-1

可能重複:
Running a shell command in a c program運行shell腳本由C

我從C.It運行shell腳本使用system()執行如何參數傳遞給該腳本?

+2

只是通過他們在字符串中system'?我錯過了什麼嗎? – Mat

+0

請注意,使用system()在很多方面都是一個糟糕的想法,請參閱http://www.webinmind.net/bpc.html#six – Tim

+0

他想從C運行shell **腳本**一個shell **命令**。差別很大,因此**不是重複**。 – phihag

回答

7

system需要包含整個命令行一個字符串,所以你通過

system("/your/shell/script 'argument 1' 'argument 2'"); 

這是很少使用system一個好主意,因爲你必須逃避所有的元字符–即使是空格也是一個問題,如上所示。你正在尋找一個exec *函數,例如execv。它的第一個參數是程序的名稱(在你的情況/bin/sh或shell腳本本身),第二是參數字符串的一個NULL結尾的名單:你的手出去`

char* program = "/your/shell/script"; 
char* args[3]; 
args[0] = "argument 1"; 
args[1] = "argument 2"; 
args[2] = NULL; 
execv(program, args); 
4
system("scriptname arg1 arg2") 
+0

我早些時候做過,但回聲1美元和回聲$ 2不打印任何 – Jay

+0

你可能會傳遞字符串作爲參數。如果使用字符串,則必須使用'arg'。 –