我正在嘗試使用 2 個 fifos(client_to_server 和 server_to_client)用 C 語言撰寫客戶端-服務器應用程式。客戶端向讀取它的服務器寫入命令的應用程式版本運行良好,但是當我在客戶端中添加行以從服務器讀取答案時,它不再起作用:服務器在讀取時被阻止來自客戶端的命令(好像 client_to_server fifo 中什么都沒有,盡管客戶端寫在里面)。在這種情況下可能有什么問題?
uj5u.com熱心網友回復:
您正在使用fputs向服務器發送資料。這意味著資料可以保留在本地緩沖區中,直到緩沖區已滿或您明確重繪 它。當您不等待答案而是從客戶端退出時,fifo 會被隱式重繪 并關閉,從而導致服務器收到某些資訊。但是,如果您在沒有事先重繪 的情況下開始在客戶端等待,則會以死鎖告終。
但請記住:管道是為單向通信而發明的。如果您想要使用確認和/或同步的 2 路通信,您應該考慮使用套接字。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/331929.html
標籤:C
上一篇:按位或和強制轉換運算元的轉換警告
