当前位置:天才代写 > tutorial > C语言/C++ 教程 > _exit()函数与exit()函数的区别

_exit()函数与exit()函数的区别

2017-11-02 08:00 星期四 所属: C语言/C++ 教程 浏览:475

exit()在竣事挪用它的历程之前,要举办如下步调:

1.cleanup();

2.在atexit()注册的函数;

‘exit()’与‘_exit()’有不少区别在利用‘fork()’,出格是‘vfork()’时变得很 突出。

‘exit()’与‘_exit()’的根基区别在于前一个挪用实施与挪用库里用户状态布局 (user-mode constructs)有关的排除事情(clean-up),并且挪用用户自界说的排除措施 (译者注:自界说排除措施由atexit函数界说,可界说多次,并以倒序执行),相对 应,后一个函数只为历程实施内核排除事情。

在由‘fork()’建设的子历程分支里,正常环境下利用‘exit()’是不正确的,这是 因为利用它会导致尺度输入输出(译者注:stdio: Standard Input Output)的缓冲区被 清空两次,并且姑且文件被出乎料想的删除(译者注:姑且文件由tmpfile函数建设 在系统姑且目次下,文件名由系统随机生成)。在C++措施中环境会更糟,因为静 态方针(static objects)的析构函数(destructors)可以被错误地执行。(尚有一些非凡情 况,好比守护措施,它们的*父历程*需要挪用‘_exit()’而不是子历程;合用于绝 大大都环境的根基法则是,‘exit()’在每一次进入‘main’函数后只挪用一次。)

在由‘vfork()’建设的子历程分支里,‘exit()’的利用将越发危险,因为它将影响

*父*历程的状态

本文出自 “驿落薄暮” 博客,请务必保存此出处http://yiluohuanghun.blog.51cto.com/3407300/1184855

 

    关键字:

天才代写-代写联系方式