ers: 有一個問題困擾我。據我所知,有兩種方法可以在Linux中調用write()。像這樣: 代碼1:這是正確的方式來調用write()?
write(DEV, buf, count);
代碼2:
int write_total = 0;
while (write_total < count) {
int len = write(DEV, buf, count);
write_total += len;
}
有什麼區別,如果DEV是網絡或設備? 我的領導告訴我Code2是正確的方法,如果DEV是網絡fd,因爲它的流媒體。 誰給文字計數字符安全的DEV?內核還是程序員?
謝謝!
這取決於一個*很多*的FD是指向什麼樣的對象,但是一般來說,你應該使用第二個(修復錯誤,處理錯誤,並且通常在EAGAIN上緩衝) – o11c
'pipe(7)'是一個很好的解讀,因爲它顯示了大多數有趣的行爲,沒有太多很多絨毛。 – o11c
你應該仔細閱讀[寫(2)](http://man7.org/linux/man-pages/man2/write.2.html)(更一般地說,你正在使用的每個功能的文檔) –