欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ 中exit(),_exit(),return,abort()函數(shù)的區(qū)別

 更新時(shí)間:2016年12月24日 11:27:23   投稿:lqh  
這篇文章主要介紹了C++ 中exit(),_exit(),return,abort()函數(shù)的區(qū)別的相關(guān)資料,需要的朋友可以參考下

exit()函數(shù)與_exit()函數(shù)及return關(guān)鍵字的區(qū)別:

  exit()和_exit()函數(shù)都可以用于結(jié)束進(jìn)程,不過_exit()調(diào)用之后會立即進(jìn)入內(nèi)核,而exit()函數(shù)會先執(zhí)行一些清理之后才會進(jìn)入內(nèi)核,比如調(diào)用各種終止處理程序,關(guān)閉所有I/O流等,我建議直接在Linux的終端中查看man手冊,手冊的內(nèi)容是最官方的,而且不會有錯(cuò),手冊的英文是為全世界的程序員做的,所以手冊的英語不會難。

1. 實(shí)例代碼:

#include <unistd.h>

    void _exit(int status);

    #include <stdlib.h>

    void _Exit(int status);

 DESCRIPTION
    The function _exit() terminates the calling process
    "immediately". Any open file descriptors belonging to
    the process are closed; any children of the process are
    inherited by process 1, init, and the process's parent
    is sent a SIGCHLD signal.

    The value status is returned to the parent process as
    the process's exit status, and can be collected using
    one of the wait() family of calls.

  這是手冊對_exit()函數(shù)的描述,意思是_exit()函數(shù)終止調(diào)用的進(jìn)程,進(jìn)程所有的文件描述符(在linux中一切皆文件)都被關(guān)閉, 這個(gè)進(jìn)程的所有子進(jìn)程將被init(最初的進(jìn)程,所有的進(jìn)程都是來自init進(jìn)程,所有的進(jìn)程都由其父進(jìn)程創(chuàng)建,即init進(jìn)程是所有進(jìn)程的祖先!)進(jìn)程領(lǐng)養(yǎng),并且這個(gè)終止的進(jìn)程將向它的父進(jìn)程發(fā)送一個(gè)sigchld信號。_exit()的參數(shù)status被返回給這個(gè)終止進(jìn)程的父進(jìn)程來作為這個(gè)終止進(jìn)程的退出狀態(tài),這個(gè)退出狀態(tài)值能被wait()函數(shù)族的調(diào)用收集(就是通過wait()函數(shù)來獲得子進(jìn)程的退出狀態(tài),之后wait()函數(shù)將會釋放子進(jìn)程的地址空間,否則會出現(xiàn)zoom進(jìn)程)。

  _exit()函數(shù)是系統(tǒng)調(diào)用。會清理內(nèi)存和包括pcb(內(nèi)核描述進(jìn)程的主要數(shù)據(jù)結(jié)構(gòu))在內(nèi)的數(shù)據(jù)結(jié)構(gòu),但是不會刷新流,而exit()函數(shù)會刷新流。比如exit()函數(shù)會將I/O緩沖中的數(shù)據(jù)寫出或讀入(printf()就是I/O緩沖,遇到‘\n'才會刷新,若直接調(diào)用exit()則會刷新,而_exit()則不會刷新)。

  2.實(shí)例代碼:

#include <stdlib.h>

    void exit(int status);

DESCRIPTION
    The exit() function causes normal process termination
    and the value of status & 0377 is returned to the parent
    (see wait(2)).

這是man手冊中對exit()函數(shù)的秒數(shù),exit()函數(shù)導(dǎo)致子進(jìn)程的正常退出,并且參數(shù)status&0377這個(gè)值將被返回給父進(jìn)程。exit()應(yīng)該是庫函數(shù)。exit()函數(shù)其實(shí)是對_exit()函數(shù)的一種封裝(庫函數(shù)就是對系統(tǒng)調(diào)用的一種封裝)。

 3.return 不是系統(tǒng)調(diào)用,也不是庫函數(shù),而是一個(gè)關(guān)鍵字,表示調(diào)用堆棧的返回(過程活動(dòng)記錄),是函數(shù)的退出,而不是進(jìn)程的退出。

  return函數(shù)退出,將函數(shù)的信息返回給調(diào)用函數(shù)使用,與exit()和_exit()函數(shù)有本質(zhì)區(qū)別。

4.abort()函數(shù)。


 #include <stdlib.h>

    void abort(void);

DESCRIPTION
    The abort() function causes abnormal program termination
    unless the signal SIGABRT is caught and the signal han-
    dler does not return. If the abort() function causes
    program termination, all open streams are closed and
    flushed.

    If the SIGABRT signal is blocked or ignored, the abort()
    function will still override it.

 

  abort()函數(shù)用于異常退出。返回一個(gè)錯(cuò)誤代碼。錯(cuò)誤代碼的缺省值是3。abort()函數(shù)導(dǎo)致程序非正常退出除非sigabrt信號被捕捉到,并且信號處理函數(shù)沒有返回(即abort()函數(shù)給自己發(fā)送sigabrt信號),如果abort()函數(shù)導(dǎo)致程序終止,所有的打開的流將被關(guān)閉并且刷新。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:

相關(guān)文章

  • H5混合開發(fā)IOS中遇到的坑

    H5混合開發(fā)IOS中遇到的坑

    本篇文章主要給大家講述了在用H5混合開發(fā)APP時(shí),IOS項(xiàng)目中遇到的坑以及解決辦法,需要的朋友參考一下吧。
    2017-12-12
  • IOS 開發(fā)APP之關(guān)于時(shí)間處理詳細(xì)介紹

    IOS 開發(fā)APP之關(guān)于時(shí)間處理詳細(xì)介紹

    這篇文章主要介紹了IOS 開發(fā)APP之關(guān)于時(shí)間處理詳細(xì)介紹的相關(guān)資料,開發(fā)APP 不僅需要對API的調(diào)用還需要對時(shí)間相關(guān)的各種API之間的差別,再因場景而異去設(shè)計(jì)相應(yīng)的機(jī)制,需要的朋友可以參考下
    2016-12-12
  • MAUI模仿iOS多任務(wù)切換卡片滑動(dòng)的交互實(shí)現(xiàn)代碼

    MAUI模仿iOS多任務(wù)切換卡片滑動(dòng)的交互實(shí)現(xiàn)代碼

    這篇文章主要介紹了[MAUI]模仿iOS多任務(wù)切換卡片滑動(dòng)的交互實(shí)現(xiàn),使用.NET MAU實(shí)現(xiàn)跨平臺支持,本項(xiàng)目可運(yùn)行于Android、iOS平臺,需要的朋友可以參考下
    2023-05-05
  • 淺談WKWebView 在64位設(shè)備上的白屏問題

    淺談WKWebView 在64位設(shè)備上的白屏問題

    下面小編就為大家?guī)硪黄獪\談WKWebView 在64位設(shè)備上的白屏問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • iOS編程學(xué)習(xí)中關(guān)于throttle的那些事

    iOS編程學(xué)習(xí)中關(guān)于throttle的那些事

    這篇文章主要給大家介紹了關(guān)于iOS編程學(xué)習(xí)中throttle的那些事,文中通過示例代碼介紹的非常詳細(xì),對各位iOS的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • iOS Touch ID 身份認(rèn)證

    iOS Touch ID 身份認(rèn)證

    本文主要介紹了iOS Touch ID 身份認(rèn)證的相關(guān)知識。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • iOS統(tǒng)計(jì)項(xiàng)目的代碼總行數(shù)

    iOS統(tǒng)計(jì)項(xiàng)目的代碼總行數(shù)

    最近一個(gè)項(xiàng)目有段時(shí)間了,不知道怎樣可以統(tǒng)計(jì)出寫了多少行代碼,如何處理這個(gè)問題呢,下面我們來探討下。
    2015-06-06
  • iOS UITableView 與 UITableViewController實(shí)例詳解

    iOS UITableView 與 UITableViewController實(shí)例詳解

    這篇文章主要介紹了iOS UITableView 與 UITableViewController實(shí)例詳解的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • IOS中對Url進(jìn)行編碼和解碼示例

    IOS中對Url進(jìn)行編碼和解碼示例

    本篇文章主要介紹了IOS中對Url進(jìn)行編碼和解碼示例,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-11-11
  • 加載帶有手勢識別器的XIB文件需注意哪些問題

    加載帶有手勢識別器的XIB文件需注意哪些問題

    手勢識別在iOS上非常重要,手勢操作移動(dòng)設(shè)備的重要特征,極大的增加了移動(dòng)設(shè)備使用便捷性。通過本教程給大家介紹加載帶有手勢識別器的XIB文件需注意哪些問題,需要的朋友可以參考下
    2015-08-08

最新評論