Linux中exit与return

void exit(int status);

exit结束一个进程,不管哪个函数调用这个函数都会结束进程

litingting@litingting-vm:~$ vi a.c
 #include <stdio.h>
 #include <unistd.h>
 #include <fcntl.h>
  
 int main(int argc, char* argv[])
  {
      return 104;
  }

1、主函数的返回值由它的父进程接收,此程序的父进程是bash终端,

litingting@litingting-vm:~$ make a
cc     a.c   -o a
litingting@litingting-vm:~$ ./a

 在bash终端中用echo $?来查看bash终端的子进程的返回值

litingting@litingting-vm:~$ echo $?
104

2、同时存在exit 和 return 判断会不会执行到return?不会的 

 #include <stdio.h>
  #include <unistd.h>
  #include <fcntl.h>
  #include <stdlib.h>//exit的头文件
                                                                                
 int main(int argc, char* argv[])
  {
      //判断会不会执行到return
      exit(99);
      return 104;
  }
litingting@litingting-vm:~$ make a
cc     a.c   -o a
litingting@litingting-vm:~$ ./a
litingting@litingting-vm:~$ echo $?
99

上述代码说明:在主函数里return 和 exit 的功能一样都是结束一个进程

3、在普通函数中使用return 会不会结束一个进程?不会

  #include <stdio.h>
  #include <unistd.h>
  #include <fcntl.h>
  #include <stdlib.h>
  
  int fun1()
  {
      return 10; 
  }
  int main(int argc, char* argv[])
  {
      fun1();
      while(1);                                                                 
      return 104;
  }
litingting@litingting-vm:~$ make a
cc     a.c   -o a
litingting@litingting-vm:~$ ./a

执行进程发现a进程并没有结束,若改为exit(10)

int fun1()
  {
      exit(10);                                                                 
  }
litingting@litingting-vm:~$ make a
cc     a.c   -o a
litingting@litingting-vm:~$ ./a
litingting@litingting-vm:~$ 

发现a进程结束了

总结:只要程序执行到了exit,这个进程就会被结束。

        return:返回给函数的调用者,在主函数中执行return,相当于exit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值