O NONBLOCK與O NDELAY有何不同?

2021-07-09 22:25:42 字數 392 閱讀 4716

o_nonblock和o_ndelay所產生的結果都是使i/o變成非擱置模式(non-blocking),在讀取不到資料或是寫入緩衝區已滿會馬上return,而不會擱置程式動作,直到有資料或寫入完成。

它們的差別在於設立o_ndelay會使i/o函式馬上回傳0,但是又衍生出乙個問題,因為讀取到檔案結尾時所回傳的也是0,這樣無法得知是哪中情況;因此,o_nonblock就產生出來,它在讀取不到資料時會回傳-1,並且設定errno為eagain。

不過需要注意的是,在gnu c中o_ndelay只是為了與bsd的程式相容,實際上是使用o_nonblock作為巨集定義,而且o_nonblock除了在ioctl中使用,還可以在open時設定。

O NONBLOCK與O NDELAY有何不同

o nonblock和o ndelay 所產生的結果都是使i o變成非擱置模式 non blocking 在讀取不到資料或是寫入緩衝區已滿會馬上return,而不會擱置程式動作,直到有資料或寫入完成。它們的差別在於設立o ndelay 會使i o函式馬上回傳0,但是又衍生出乙個問題,因為讀取到檔案結...

SQL與NoSQL MySQL與NoSQL的融合

寫這一篇內容的原因是mysql5.6.2突然推出了memcached的功能。nosql to innodb with memcached的出現,可以看出nosql對關聯式資料庫的確產生了巨大的影響,個人覺得這是乙個非常大的進步,可以讓開發人員更加方便的使用nosql和關聯式資料庫。nosql一般被認...

指標與陣列 a與 a區別

假設宣告了乙個陣列a,則 a表示陣列a的首位址,a與 a 0 表示陣列a首元素的首位址,那麼 a 1與a 1有哪些區別呢?通過下面的實驗來說明。int i 0 int a 5 int p int a 1 for i 0 i 5 i printf a 0x p,a 0x p,a 1 0x p n a,...