如何获取execv的返回值? 我对C++是很新的,我试图得到输出: execv("./rdesktop",NULL); 我在C++中编程,在RHEL 6上。

如何获取execv的返回值? 我对C++是很新的,我试图得到输出: execv("./rdesktop",NULL); 我在C++中编程,在RHEL 6上。,c++,execv,C++,Execv,像FTP客户端一样,我希望从外部运行的程序获取所有状态更新。有人能告诉我怎么做吗?您可以通过调用wait、waitpid、wait3或wait4来检查子进程的退出状态 您可以通过调用wait、waitpid、wait3或wait4来检查子进程的退出状态 execv将替换当前进程,因此在执行它之后,正在执行的将是您指定的任何可执行文件 通常,您执行fork,然后仅在子进程中执行execv。父进程接收新子进程的PID,它可以使用该PID监视子进程的执行。execv替换当前进程,因此在执行该进程后,执

像FTP客户端一样,我希望从外部运行的程序获取所有状态更新。有人能告诉我怎么做吗?

您可以通过调用wait、waitpid、wait3或wait4来检查子进程的退出状态


您可以通过调用wait、waitpid、wait3或wait4来检查子进程的退出状态

execv将替换当前进程,因此在执行它之后,正在执行的将是您指定的任何可执行文件

通常,您执行fork,然后仅在子进程中执行execv。父进程接收新子进程的PID,它可以使用该PID监视子进程的执行。

execv替换当前进程,因此在执行该进程后,执行的将是您指定的任何可执行文件


通常,您执行fork,然后仅在子进程中执行execv。父进程接收新子进程的PID,它可以使用该PID监视子进程的执行。

返回值,例如退出或类似的结果或输出,即stdout/stderr?您的问题标题说明了一件事,但您的问题说明了另一件事:-我不确定您是否了解execv的工作;它将用指定的进程替换您的进程。您的过程不再存在,因此无需进行捕获!execv仅在发生故障时返回。返回值,例如退出或类似的结果或输出,即stdout/stderr?您的问题标题说明了一件事,但您的问题说明了另一件事:-我不确定您是否了解execv的工作;它将用指定的进程替换您的进程。您的过程不再存在,因此无需进行捕获!execv仅在出现故障时返回。
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main () {
  pid_t pid = fork();
  switch(pid) {
  case 0:
    // We are the child process
    execl("/bin/ls", "ls", NULL);

    // If we get here, something is wrong.
    perror("/bin/ls");
    exit(255);
  default:
    // We are the parent process
    {
      int status;
      if( waitpid(pid, &status, 0) < 0 ) {
        perror("wait");
        exit(254);
      }
      if(WIFEXITED(status)) {
        printf("Process %d returned %d\n", pid, WEXITSTATUS(status));
        exit(WEXITSTATUS(status));
      }
      if(WIFSIGNALED(status)) {
        printf("Process %d killed: signal %d%s\n",
          pid, WTERMSIG(status),
          WCOREDUMP(status) ? " - core dumped" : "");
        exit(1);
      }
    }
  case -1:
    // fork failed
    perror("fork");
    exit(1);
  }
}