应用程序的返回码是一个 int16_t?

Căt*_*rbu 7 c c++ operating-system

在谈论启动新流程时,您可以使用int system(char* command). 如果传递非 NULL参数,则可以获得:

  • -1 如果子进程无法启动;
  • 否则子进程的返回码;

注意:在 Unix/Linux 中,返回码位于结果的高八位,而低八位包含终止原因码>{1}<,因此等于 1 的 retcode 将返回为 256;您可以通过将值右移八位来获得实际的返回码;还有一个名为 WEXITSTATUS() 的宏可以为您执行此操作。

搜索执行WEXITSTATUS()这是一个转变的8位到右侧。

#define WEXITSTATUS(x) (_W_INT(x) >> 8)

这就是为什么我倾向于认为返回码是 2 个字节的原因(也来自 >{1}<)。引用来自在线找到的 C 课程。

Ps 我想知道返回码和终止原因码之间的区别,它们不一样吗?

Jea*_*nès 1

终止的原因有多种:

  • 进程终止调用return(显式或非显式)
  • 信号传递后进程终止
  • 信号传递后进程停止。这并不是真正的终止,但在很多情况下都需要捕获。

对于每个终端,分别可以访问代码:

  • 返回值(仅低八位)
  • 信号数
  • 信号数