我正在構建客戶端/服務器模型,但使用帶有mkfifo()的命名管道的套接字。如何在未遇到EOF時終止read()?
客戶端輸出寫入命名管道,和我讀使用我的服務器輸入:
while ((n = read(fd_in, &newChar, 1)) == 1) { /* ... */ }
我每次讀一個字符,直到我遇到了兩個大字:<「CR」 > <'LF'>。我想以這樣的方式編寫我的代碼,如果客戶在一段時間後不終止<'CR'> <'LF'>,我可以丟棄它並繼續到另一個客戶端,否則下一個客戶端將擁有等待,也許無限。
有沒有辦法請終止執行read()?如果它在2秒內沒有返回,我可以說中斷讀取並丟棄之前讀取的字符,並重新開始閱讀?
感謝你的幫助,
Jary
也許在非阻塞模式下讀取並設置計時器到期? – Peyman 2011-02-08 00:26:33