将execvp与参数一起使用

时间:2020-09-19 11:48:28

标签: c++

我想知道如何使用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;
}

0 个答案:

没有答案