[英]Reading data of variable size in buffer using read system call in C
我有一個應用程序,它將數據(控制數據,訪問信息等)寫入父進程的管道的一端。 在子進程中,我想要按原樣讀取該數據。
父進程在許多位置執行許多write()操作。 為了將數據讀入緩沖區,我們需要指定數據的長度
read(int fd, buffer, len).
我的問題是,父進程每次都寫入可變大小的數據。 那么子進程將如何知道數據的長度。
我試圖讀取單個字符並將其添加到buff中,
char ch;
int n = 0;
while(n >= 0)
{
n = read(int fd, ch, 1);
*buff = ch; buff++;
}
但它似乎沒有辦法做到這一點
請告訴我如何讀取子進程中的可變大小數據?
您需要將格式化數據放入管道中,可以在讀取端解碼。 也就是說,您必須指定一種格式/協議才能理解即將發布的數據。 您可以指定長度,或使用以\\n
或\\0
字符結尾的行,無論您的數據是什么套件。
嘿,你問了一個最古老的問題。 多年來已經開發出許多答案......
所有這些技術都有一個共同點:讀者必須已經知道編碼類型,並且必須使用程序邏輯准備根據其結構有條件地讀取數據。 當然,已經編寫了可以讀取XML,YAML和JSON的庫。
兩種最常見和最簡單的方法是首先以固定大小寫入長度,或者使用特殊的記錄終止符來告訴記錄已經結束。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.