1. 程式人生 > >2014025654《嵌入式系統程序設計》第五周學習總結

2014025654《嵌入式系統程序設計》第五周學習總結

判斷 輸出 父進程 文件流 嵌入式系統 結束 可執行文件 size_t 進程組

1.fread

在文件被打開後,可對文件進行讀寫等操作,其中讀操作的函數為fread()

函數原型 size_t fread (voidptr,size_t size,size_t nmemb,FILEstream)

ptr:存放讀入記錄的緩沖區

size:讀取的記錄大小

nmemb:讀取的記錄數

stream:要讀取的文件流

函數返回值

成功:返回實際讀取的nmemb數目

失敗:EOF

fwrite

fwrite(0函數用於對確定的文件流進行寫操作。

函數原型 size_t fwrite (constptr,size_t size,size_t nmemb,FILE*stream)

ptr:存放寫入記錄的緩沖區

size:寫入的記錄大小

nmemb:寫入的記錄數

stream:要寫入的文件流

函數返回值

成功:返回實際讀取的nmemb數目

失敗:EOF

fwrite和fread用於讀寫記錄、用於二進制文件的術如何輸出。fwrite是按二進制寫入,所以寫入數據所占空間是根據數據類型來確定。fread讀取文件,可安全用於二進制文件。

exe()函數容易執行失敗,所以一定要加上錯誤判斷語句。

常見錯誤:

找不到文件或路徑

數組argv和envp沒有用NULL結束

沒有對應可執行文件的運行權限

exit: void exit(int status)

_exit: void _exit(int status)

exit()和_exit() 函數終止進程,執行操作時,進程停下剩下的操作。但是兩個函數略有不同,_exit()直接終止進程,exit()在終止進程前對目前文件的使用情況進行調查,把文件緩沖區的內容寫回文件。

waitpid函數使父進程阻塞,在linux中實現wait()函數調用的就是waitpid()函數。

waitpid函數de參數

pid>0時,只等待進程等於pid的子進程,不收其他進程的影響

pid=-1時,等待任何一個子進程

pid=0時,等待同一個進程組中的任何子進程

pid<-1時,由pid的絕對值絕對進程組

fork()函數是從已有的進程中再創建一個新進程,所創建的新進程是子進程,已有的進程為父進程。子進程再原進程中繼承了地址空間,子進程只有進程號和資源使用等。

2014025654《嵌入式系統程序設計》第五周學習總結