2015-04-21 33 views
2

在某些C代碼中,我有一個父進程,通過PIPE通道從子進程讀取消息。 子進程將發送0到9之間的整數值或一個字符串(char *)消息。
在父進程中,如何測試子進程是否發送了整型值或字符串(char *)消息?管道類型消息檢測

非常感謝!

回答

1

管道可以處理非結構化二進制數據(就像所有其他文件一樣),所以唯一的方法是傳遞更多的數據,例如指示接下來將發送什麼的標誌。如果您正在開發一個大型項目,您可以使用像Google的Protocol Buffers這樣的序列化系統來簡化您的生活。

當然,在您的特定情況下,你可以依靠的消息爲零當且僅當該消息是整數的第一個字節,但它是一門功課級解決方案:)

+1

他能否依靠第一個字節是零來區分數字和字符串取決於系統的字節順序,以及是否必須支持空字符串。以某種協議包裝通信的想法要好得多,無論是罐頭協議還是本地協議。 –

+0

謝謝你的回答! :) –