我想使用unix命令
插入文件New_IP=New_IP=strtok(Network_config,delimeter);
system("sed -i ' i '$New_IP' ' Network_settings.txt");
答案 0 :(得分:0)
最安全的做法是将这样的值传递给命令行作为环境变量,并让shell扩展它们。这避免了大量的字符串逃避麻烦。也许吧:
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 进行消毒,但幸运的是,它比对shell进行消毒要简单得多,这可以通过使用env变量来避免。
答案 1 :(得分:0)
您不能像在其他脚本语言中那样在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