【发布时间】:2014-03-20 16:46:48
【问题描述】:
所以我正在编写一个程序,其中参数如下:
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 是传递上述功能的正确参数吗?我查看了手册页,它们是有道理的,但对于这种情况可能不正确。 谢谢!
【问题讨论】:
-
您会从答案中注意到共同主题:
execvp(cmds[n], &cmds[n]);或同等主题。也就是说,您将参数数组的第 n 个元素作为第一个参数传递给execvp(),并将参数数组的第 n 个元素的地址作为第二个参数传递 - 在您的特定情况下,execvp(argv[1], &argv[1]);.显然,您在技术上没有义务这样做(参数是独立的),但您需要一个很好的理由才能这样做。