日期:2014-05-16  浏览次数:20657 次

echo $?命令取的是进程结束后的eax的值吗?

先看一点代码
#include<stdio.h>
{
  printf("hello world\n");
}
执行后该程序后,用echo $?命令吸显示12(即printf的返回值)
那echo $?命令取的是进程结束后的eax的值吗?
如果是,那要是我电脑有几个处理器,然后运行多线程什么的,没个线程都同时返回一个值,那这时候echo $?会返回什么呢?

------解决方案--------------------
$?是当前shell运行的程序获得的程序的返回值. 在C中如果用exit -1的话 $?应该是254 (255-1得到的)

只有当程序退出时 shell 才捕捉返回值. 多线程退出了还是回到父进程而已.并没返回给系统
------解决方案--------------------
echo $?显示的上一条命令的返回值。这个值是保存在Shell程序的变量里的。楼主记不记得Shell程序是你所运行的程序的父进程?
楼主没有写return XX; 所以printf的返回值就成了程序的返回值,然后“hello world\n”恰好是十二个字符。