从C运行shell脚本

Jay*_*Jay 0 c shell

可能重复:
在ac程序中运行shell命令

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

phi*_*hag 7

system 获取包含整个命令行的单个字符串,因此您将通过

system("/your/shell/script 'argument 1' 'argument 2'");
Run Code Online (Sandbox Code Playgroud)

使用它很少是一个好主意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);
Run Code Online (Sandbox Code Playgroud)