UNIX系統管理:系統調用-STREAM機制

來源:互聯網
上載者:User
關鍵字 UNIX系統管理

基本上所有的系統調用成功時返回0或正數,失敗時返回負值。

流的高級操作

poll系統調用的格式

#include <stropts.h>

#include <poll>

int poll(fds,nfds,timeout)

struct pollfd fds[]; /*流組描述結構*/

unsigned long nfds; /*流個數*/

int timeout; /*查詢超時時間*/

參數與功能說明:

參數nfds指出流組中流的個數,而fds是一個流組描述結構,他的格式如下:

struct pollfd

{

int fd; /*流描述項*/

short HTTP://www.aliyun.com/zixun/aggregation/38907.html">events; /*使用者期望的事件*/

short revents; /*流上發生的事件*/

}fds[nfds];

其功能是查詢流組中各條流上是否發生了使用者期望的事件。 若有事件發生,則將發生的事件登記在流組描述結構的revents域中,返回給使用者。 如果沒有任何事件發生,則睡眠等待直到有事件發生或等待超時。 超時時間有參數timeout給出,單位為毫秒。 Timeout為-1時,表示timeout取值無窮大,可以無限止地等待。

使用者期望的事件有三類,他們的取值及含義如下:

POLLIN:期望相應流上能到達一個資料消息。

POLLOUT:期望能向相應流上發送一個資料消息。

POLLPRI:期望相應流上能到達一個高優先權資料消息(高優先權是一個控制訊息)

Revents取值有三種情形:0、已發生的事件、出錯事件。

0表示相應流上沒有發生任何期望的事件。 已發生的事件即是對該流期望的事件;出錯事件是poll調用出錯時設置的值,他可有三種取值,在revents中可能是這三種值的「或」。 出錯事件的取值及其含義如下:

POLLERR:流上到達一個錯誤訊息,以後對流的操作不能繼續進行。

POLLHUP:流上出現了掛起條件,此後不能對流再發送消息。

POLLNVAL:非法流描述項。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.