2012-11-04 33 views
0

可能重複:
File read() function in Unix Systems行爲讀()中的Unix中斷時

假設()函數具有讀取10個字節的數據,並且如果所讀取的存儲在buffer.Now讀()函數在unix中被信號中斷,我重新啓動讀取函數,如下所示,其中將下一個字節存儲在緩衝區中,currentposition + 1或將從緩衝區的開始寫入。

int r_read(int fd, void *buf, int size) 
{ 
    while((retval=read(fd,buf,size))==-1 && errno ==EINTR); 
    return retval; 
} 

問候

+2

爲什麼你再次發佈相同的問題? –

+0

KingsIndian當問題的產生者在兩個問題中不同時,這怎麼能夠重複?在說重複之前請仔細閱讀 – Naruto

+1

你爲什麼[問同樣的事情兩次](http://stackoverflow.com/questions/13218477/file-read-function-in-unix-systems)? – user4815162342

回答

0

如您有編碼,得到EINTR後會再打電話read,與buf爲起始的內存地址來存儲數據。這看起來很合適。

但是,read在讀取部分數據時可能返回正數,在這種情況下,您的while()是中斷。