我要插入文件中使用unix命令如何使用unix命令插入文件?
New_IP=New_IP=strtok(Network_config,delimeter);
system("sed -i ' i '$New_IP' ' Network_settings.txt");
我要插入文件中使用unix命令如何使用unix命令插入文件?
New_IP=New_IP=strtok(Network_config,delimeter);
system("sed -i ' i '$New_IP' ' Network_settings.txt");
這是最安全的傳遞這樣的價值觀命令行環境變量,並讓殼展開。這避免了大量的字符串逃避麻煩。因此,也許:
New_IP=strtok(Network_config,delimeter);
setenv("New_IP", New_IP);
system("sed -i \" i $New_IP \" Network_settings.txt");
/* note backshaled \" in string above are for C compiler */
注:如果New_IP
不慎包含換行符,上面就不行,因爲sed的希望那些有反斜線,使用sed的i
命令時。而且,允許換行符允許輸入有更多的sed命令,這可能會做一些令人討厭的命令,例如sed w
命令。所以New_IP
應該對sed進行消毒處理,但幸運的是這比殼體的消毒要簡單得多,這可以通過使用env變量來避免。
您不能像在其他腳本語言中那樣在C字符串中使用$New_IP
。
在C你要插入您的變量這種方式,例如
char *command;
asprintf(command, "sed -i ' i '%s' ' Network_settings.txt", New_IP);
system(command);
free(command) // if command is useless in your code then free it
注意:如果New_IP包含任何空格,並且實際上會成爲安全漏洞,如果New_IP不是100%可信值(假設它包含'「; rm -rf〜#」'),則這將不起作用。 – hyde 2013-03-18 09:37:24
你問的幫助與'sed'命令,或者在C中傳遞參數的幫助'系統()'調用?如果'sed'不是問題,請添加命令行命令,詢問您想要的內容,並詢問「如何從C執行此係統()調用」。或者如果你的問題是創建一個你想要的命令行命令,那麼請問,而不是問一個C問題。 – hyde 2013-03-18 09:23:06
我想插入文件使用sed命令是存儲在New_IP中的值到文件 – Mohammed 2013-03-18 09:26:08
那麼你現在的代碼有什麼問題? – hyde 2013-03-18 09:29:42