Return value 正在尝试使用execvp从程序运行中获取返回值,始终为0

Return value 正在尝试使用execvp从程序运行中获取返回值,始终为0,return-value,wait,pid,execvp,Return Value,Wait,Pid,Execvp,我正在尝试学习如何正确地将execvp用于我正在进行的项目,在该项目中,我希望获得我运行的另一个程序的返回值。我做了一个简短的程序,试图学习如何获取返回值,但我没有运气 该程序执行我编写的另一个短程序,并获取返回值。它似乎总是0,但是无论它实际返回什么,这都是由参数决定的 1 #include <unistd.h> 2 #include <stdlib.h> 3 #include <stdio.h> 4 #include <string.

我正在尝试学习如何正确地将execvp用于我正在进行的项目,在该项目中,我希望获得我运行的另一个程序的返回值。我做了一个简短的程序,试图学习如何获取返回值,但我没有运气

该程序执行我编写的另一个短程序,并获取返回值。它似乎总是0,但是无论它实际返回什么,这都是由参数决定的

  1 #include <unistd.h>
  2 #include <stdlib.h>
  3 #include <stdio.h>
  4 #include <string.h>
  5
  6 int main(void)
  7 {
  8    int ret;
  9    pid_t pid;
 10    char *array[2];
 11    char a[255] = "./program";
 12    char b[255] = "1";
 13    
 14
 15    array[0] = a;
 16    array[1] = b;
 17    
 18
 19    pid = fork();
 20
 21    if(pid == 0)
 22    {
 23       execvp("~/mydirr", array);
 24    }
 25
 26    else
 27    {
 28       wait(pid, &ret, 0);
 29       printf("%d\n", ret);
 30    }
 31    return EXIT_SUCCESS;
 32 }

您应该检查execvp是否返回-1。谢谢!是的,它正在返回-1。最可能的原因是什么?在这种情况下,您应该检查errno以了解调用失败的原因-请参阅: