execvp 可执行 运行 引起的输出运行时错误

Output Runtime error caused by executable run by execvp

我正在尝试使用 execvp 执行可执行的 c 程序。正常情况下,例如使用 scanf 获取输入并使用 printf 显示输出在终端中工作正常。 但是运行时错误不会像 Segmentation fault (core dumped) 那样显示在终端中。 这是我的代码:

int main(int argc, char const *argv[]) {
int fd=open("/dev/ptmx",O_RDWR);
char *name=ptsname(fd);
grantpt(fd);
unlockpt(fd);
  int pid=fork();
  if(pid==0){
    fd=open(name,O_RDWR);//opening pts
      if(fd<0){
        printf("fd error2\n");
        return -1;
      }
    char *cmd="./e"; //e is executable with runtime error 
    char *argv[2]={cmd,0};
    if(execvp(cmd,argv)<0)
    printf("execvp errorrr\n");

  }
  else{
    while(wait(0)!=pid);
    printf("Program exited\n");
  }
  return 0;
}

我尝试使用 dup2 设置标准错误。没用。

使用 wait() 的状态参数获取程序退出的原因。

int status;
while (wait(&status) != pid) {}
if (WIFSIGNALED(status)) {
    printf("%s", strsignal(WTERMSIG(status)));
    if (WCOREDUMP(status)) {
        printf(" (core dumped)\n");
    } else {
        printf("\n");
    }
}