vxworks下select 的使用

2021-04-28 09:26:04 字數 945 閱讀 9179

select()作用是掛起一系列的檔案描述符,其api為:

int select

(int              width,      /* number of bits to examine from 0 */

fd_set *         preadfds,   /* read fds */

fd_set *         pwritefds, /* write fds */

fd_set *         pexceptfds, /* exception fds (unsupported) */

struct timeval * ptimeout    /* max time to wait, null = forever */

)該函式允許乙個任務掛起一系列的檔案描述符,直到檔案描述符已經準備好時,再將其喚醒。引數preadfds, pwritefds, and pexceptfds 分別指向相應的檔案描述符,每乙個 bit對應乙個檔案描述符。preadfds置位將會使select() 掛起讀檔案描述符,直到相應的檔案描述符有資料準備好時才釋放。同樣pwritefds將會引起寫檔案描述符發生相關的操作。pexceptfds在vxworks中沒有用到。

下邊的一些巨集用於設定fd_set()

fd_set(fd, &fdset)

fd_clr(fd, &fdset)

fd_zero(&fdset)

width為設定的bit數,可以是最大檔案描述符數+1,或者fd_setsize。當函式select返回時,將準備好的檔案描述符對應的bit 置位,其他的清0。可以使用fd_isset 來檢查那些被置位。

例: vxworks下基於select的tcp伺服器端設計

#include

#include

#include

#include

/* end of the file */

VxWorks下程式設計的幾個誤區

vxworks下程式設計的幾個誤區 tornado使用標準c語言嗎?為什麼沒有提供inb outb 等函式?tornado預設使用gnu編譯器,支援ansiiso c,c 以及at t語法彙編 非intel 由於c 很龐大,而且在不斷發展,所以有些標準c 的特徵 可能gnu不支援 基本沒有編譯器支援...

對於vxworks下硬碟驅動

1.曾經看到帖子說vxworks5.5下沒有sata驅動,vxworks6.6下有,這樣的說法恐怕不正確,由 於俺在5.5下也運用運用了sata硬碟,請注重這裡俺只是說運用運用,沒有說運用運用了sata的ahci模式。俺個人覺得,vxworks5.5下實際上是可以運用運用ide模式的ata,就是說c...

VxWorks下BSP原始檔結構

tornado開發環境安裝完成後,在target config目錄下包含由官方提供的一些bsp以及公用目錄all,all目錄被所有的bsp使用,具體檔案介紹如下 vxworks核心檔案 檔名說明usrconfig.c 包含usrinit,usrroot等函式 bootinit.c 包含romstar...