關於exit和 exit在vfork之後的研究

2021-08-13 14:59:01 字數 449 閱讀 6145

這段時間回過頭看unix高階環境程式設計,感覺以前不理解的現在有了明顯的提公升。在第八章的第四節中提到vfork在呼叫exit之後父程序會導致printf輸出出錯返回1,做了乙個實驗,結果顯示exit和_exit結果是一樣的。除非在子程序中呼叫函式關閉輸出流,才會導致printf返回-1.不是很理解,希望大牛能幫忙給個解答。

實驗環境為:centos release 6.8 (final)

核心版本為:linux 2.6.32-642.el6.x86_64 #1 smp tue may 10 17:27:01 utc 2016 x86_64 x86_64 x86_64 gnu/linux

程式原始碼為:

#include

#include

#include

typedef char *p[10] ;

int main ()

else

}

exit和exit的區別?

exit終止呼叫程序,但不關閉檔案,不清除輸出快取,也不呼叫出口函式。exit函式將終止呼叫程序。在退出程式之前,所有檔案關閉,緩衝輸出內容 將重新整理定義,並呼叫所有已重新整理的 出口函式 由atexit定義 作為系統呼叫而言,exit和exit是一對孿生兄弟,它們究竟相似到什麼程度,我們可以從l...

exit和exit的區別

在linux的標準庫函式中,有一套稱作高階i o的函式,我們熟知的printf fopen fread fwrite都在此列,他們也被稱作緩衝 i o。其特徵是對應每乙個開啟的檔案,都存在乙個緩衝區,在記憶體中都有一片緩衝區,每次讀檔案會多讀若干條記錄,這樣下次讀檔案時就可以直接從記憶體的快取中取出...

exit 和 exit 的區別

exit 和 exit 的效果都是讓程式退出執行,而 exit 用來 盡快 退出。先說一下atexit 函式。我們可以用atexit 註冊乙個或多個函式退出清理函式 或者on exit 但這個函式不建議用 這些清理函式按照註冊時的反順序,在exit 或main函式return時被呼叫。include...