2011-06-25 123 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'。 –