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...