如果exit(0) 在return 1 之前,return1 会执行吗?

If exit(0) is there before return 1, will return1 execute?

下面的代码会发生什么,程序是先执行'return 1'还是退出?

int cmd_quit(tok_t arg[]) {
  printf("Bye\n");
  exit(0);
  return 1;
}

程序将在遇到 return 1; 语句之前退出。

  • exit() 函数导致进程终止。
  • exit() 函数没有 return。
  • 您的计划将达不到 return 1

exit() 结束程序,无论如何。所以不行。实际上,C 运行时总是会做类似

的事情
exit(main(argc, argv));

执行您的程序。

(意思是:if main() returns,exit() 将自动调用其 return 值)

函数exit会在return之前执行,但通常用于异常退出,returns给调用者一个失败代码。所以最好反转退出值

exit(1);
return 0;

但是在您提供的代码中,检测实际故障是有意义的。

if (printf("Bye\n") <= 0)
    exit(1);
return 0;