从C运行shell脚本

时间:2011-06-25 09:51:52

标签: c shell

  

可能重复:
  Running a shell command in a c program

我正在运行来自C.的shell脚本。它是使用system()执行的。如何将参数传递给这个脚本?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:4)

system("scriptname arg1 arg2")