簡體   English   中英

管道無法讀取/寫入所有字符

[英]pipe can not read/write all the chars

我正在嘗試使用管道將char數組從一個進程發送到另一個進程,這些字符正在傳遞但不是全部! 只是開始的一部分。 這是我的代碼:

int p1[2], p2[2];

int main()
{
    pipe(p1);

    int f1= fork();

    if(f1 == 0)

    {       
        char ar[100];
        int n = 38;
        for(int i=0;i<n;i++)
        { ar[i] = 'f'; }
        close(p1[0]); //close the read
        write(p1[1],ar,n+1);

    } else if (f1 > 0)

    {
        wait(NULL);
        int f2 = fork();
        if(f2 == 0)

        {   
            char arr2[100];
            close(p1[1]); //close the write
            int m = read(p1[0],arr2,strlen(arr2));
            cout << arr2 << " " << m << endl;   

        } 
        else if (f2 > 0)

        {wait(NULL);}

    }
    return 0;
}

您在未初始化的char數組上調用std::strlen() ,這是您的錯誤。 std::strlen()查找數組中空字節的首次出現並返回其位置。 但是該數組未初始化 ,因此使空字節的首次出現不確定

此外,您應該檢查庫函數的返回值( pipe()read()write()fork()等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM