- 論壇徽章:
- 0
|
最近解決一個問題,用linux中的select函數檢測有名管道中是否有數據可讀,如果沒有超時40ms,如果有就立即返回,然后繼續(xù)做select監(jiān)測,可是我需要用到tv值,tv值會發(fā)生變化嗎?
- int i;
- fd_set rfds;
- struct timeval tv;
- while(1)
- {
- tv.tv_sec = 0;
- tv.tv_usec = 40000;
- FD_ZERO(&rfds);
- FD_SET(fid, &rfds);
- ret = select(fid+1, &rfds, NULL, NULL, &tv);
- printf("tv=%d\n",tv.tv_usec);
- if (ret > 0 && FD_ISSET(fid, &rfds))
- read(fid, &i, sizeof(int));
- }
復制代碼 另一個線程會往管道里寫數據,這里ret立即返回,可是網上說tv的值就是剩余時間,但是加打印看,每次返回ret后tv都是0,老師也說tv的值會變,可是還是有點懷疑,誰能幫我解釋一下呢?或者我的程序有什么不對的地方需要改正?求救各位!謝謝啦 |
|