我想知道如何使用fork()
和execvp()
来运行带有参数的程序。
我想运行程序test
并传递参数flag
。
我正在使用变量args
来捕获字符串start /test flag
。下面的代码段包含在条件语句中,该条件语句检查已分析的字符串start /test -flag
。
arguments[0] = "/test"
arguments[1] = "-flag"
char * arguments[3];
arguments[0] = (char*)args[1].c_str();
arguments[1] = (char*)args[2].c_str();
arguments[2] = NULL;
cout << "Arguments[1] = " << arguments[1] << endl;
pid_t pid = fork();
// ERROR
if (pid == -1)
perror("ERROR: Failed to fork");
// Child
if (pid == 0)
{
cout << "child: " << pid << endl;
if (execvp (arguments[0], arguments) == -1)
{
perror("exec");
}
}
// Parent
if (pid > 0)
{
wait(0);
cout << "parent: " << pid << endl;
}
这是否意味着我的程序test
正在传递参数flag
作为参数?换句话说,ARGV[0]:
标志?
int main (int argc, char **argv)
{
cout << "YOU ENTERED: " << argc << "ARGUMENTS" << endl;
cout << "ARGV[0]: " << argv[0] << endl;
return 0;
}