有一件事我想知道在Unix和類Unix系統(如BSD,GNU/Linux等)上是否有辦法做到這一點。我不在乎是否必須使用標準C I/O或低級別的Unix I/O接口,因爲在這一點上,我還沒有足夠的承諾爲此目的而使用其中之一。簡而言之,如果一個界面允許我這樣做,另一個界面不允許,那麼我會選擇這個界面。有沒有辦法在POSIX C中做到這一點?
無論如何 - 這就是我想要做的。我有一個輸入文件流(再一次,不關心它是一個ANSI「FILE」結構還是一個Unix文件描述符),我想檢查這個流是否有任何數據等待讀取 - - 但這裏有一個 - 如果有沒有等待被讀取的數據,但是稍後有可能會有更多這樣的數據進入(比如如果在這個文件流的另一端是另一個程序我與intereacting)我只是希望我的程序能夠知道,有沒有數據可用,所以它可以繼續進行其他操作,並檢查回來後,看是否有新數據已經來到了(相對於只是在等待更多信息的同時凍結我的程序)。
而且,如果沒有數據等待讀----我想知道是否有任何機會後更可能出現在(即是如果在文件流的另一端是另一種程序,它可能發送更多數據到流)---或者如果有否有更多數據進入的可能性(即如果文件流的另一端的程序終止或關閉文件流就結束了---或者如果文件流引用實際文件)。
那麼,有什麼辦法可以在Unix系統的C上做到這一點?如果是這樣,怎麼樣? (再一次,在這一點上,我並不關心我是使用ANSI C標準I/O還是必須使用低級Unix I/O)。
您可能想要閱讀諸如select(),epoll()和非阻塞I/O等內容。 –
查找'O_NONBLOCK'。 – duskwuff
簡單的可能'recv' –