C: execvp() 和命令行参数

标签 c execvp

所以我正在编写一个程序,其中参数如下:

program start emacs file.c

甚至

program wait

本质上,第一个参数 (argv[0]) 是程序名称,后面是用户输入。

在我的代码中,我调用了 execvp。问题是,我不完全确定我引用了正确的论据。

if (pid == 0) { 
                    execvp(argv[1], argv); //Line of interest
                    exit(1);
                    }

argv[1] 和 argv 是为上述功能传递的正确参数吗?我查看了手册页,它们是有道理的,但对于这种情况可能不正确。 谢谢!

最佳答案

在您的 main 中,第一个示例中的 argv 将是这样的:

argv[0] = "program";
argv[1] = "start";
argv[2] = "emacs";
argv[3] = "file.c";
argv[4] = NULL;

在 execv 中,你想用参数“emacs file.c”执行程序“start”,对吧?那么第一个参数应该是 argv[1] - "start",第二个参数应该是一个包含以下字符串的数组:{"start", "emacs", "file.c", NULL}。如果使用 argv,则在 argv[0] 中包含“program”字符串。

您可以创建一个新数组并复制这些参数,或者像这样使用 argv[1] 的地址:

execvp(argv[1], &argv[1]); //Line of interest

关于C: execvp() 和命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21896000/

相关文章:

c - 如何使用批处理脚本在Windows上查找软件图标

c - HLS IP与SDK之间如何进行流数据通信?

c - 扩大 'zoul' 的堆大小

c - 当我不在父进程中等待子进程时,如何终止程序?

我们可以在 c 中的 execvp() 中将变量作为命令行参数传递吗

c - execvp 忽略带有 ' 的参数

c++ - C 枚举引用未定义,但位于包含的头文件中?

c - 为什么 'strcat' 函数不起作用?

C - 将 execvp 与用户输入一起使用

c - 如何在 C 中执行 ls *.txt