exit与return的区别

  • 格式:pdf
  • 大小:64.76 KB
  • 文档页数:1

exit与return的区别

exit(); 是整个程序的结束。

exit(0):正常运⾏程序并退出程序;exit(1):⾮正常运⾏导致退出程序;

return();是某个函数的结束,并返回结果。

1. return返回函数值,是关键字; exit 是⼀个函数。

2. return是语⾔级别的,它表⽰了调⽤堆栈的返回;⽽exit是系统调⽤级别的,它表⽰了⼀个进程的结束。 3. return是函数的退出(返回);exit是进程的退出。

4. return是提供的,exit是提供的(或者函数库中给出的)。

5. return⽤于结束⼀个函数的执⾏,将函数的执⾏信息传出个其他调⽤函数使⽤;exit函数是退出应⽤程序,删除进程使⽤的内存空间,并将应⽤程序的⼀个状态返回给OS,这个状态标识了应⽤程序的⼀些运⾏信息,这个信息和机器和操作系统有关,⼀般是 0 为正常退出,⾮0为⾮正常退出。 6. ⾮主函数中调⽤return和exit效果很明显,但是在main函数中调⽤return和exit的现象就很模糊,多数情况下现象都是⼀致的。

exit和_exit

进程终⽌有5种⽅法:1正常终⽌

(1)从main函数返回

(2)调⽤exit

(3)调⽤_exit2异常终⽌

(1)调⽤abort

(2)由⼀个信号来终⽌

exit和_exit就是⽤来正常终⽌⼀个进程的,主要区别是_exit会⽴刻进⼊内核,⽽exit先执⾏⼀些清除⼯作(包括执⾏各种终⽌处理程序,关闭所有标准I/O等,⼀旦关闭了IO,例如Printf等函数就不会输出任何东西了),然后才进⼊内核。这两个函数会对⽗⼦进程有⼀定的影响,当⽤vfork创建⼦进程时,⼦进程会先在⽗进程的地址空间运⾏(这跟fork不⼀样),如果⼦进程调⽤了exit就会把⽗进程的IO给关掉。

这两个函数都带⼀个参数表⽰终⽌状态,这跟我们平时写的return效果是⼀样的,如果不返回⼀个终⽌状态,那表⽰这个进程的终⽌状态就是未定义的。