簡體   English   中英

Linux IPC管道無法正常工作

[英]Linux IPC pipe is not working

所以我不熟悉linux中的進程間通信和進程,所以我真的無法弄清楚問題是什么。 我編寫的以下程序與我在家庭作業中使用的問題相同,包括使用縮減的管道。 它基本上是從孩子發送一個字符到父母,但它不會打印出該字符。
它打印出來:

hello from child
sending a
hello from parent
trying to receive...
received: reaping child

它應該說在第三行的哪個位置

received: a

任何答案都表示贊賞,如果您對該計划中的任何其他內容有任何有用的批評。 感謝大家

#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>


int main(int argc, char* argv[])
{
    pid_t pid = fork();
    int comm[2];

    pipe(comm);

if (pid == 0)
{
    char send = 'a';
    int check;
    close(comm[0]);
    printf("hello from child\n");
    printf("sending %c\n", send);
    check =  write(comm[1], &send, 1);
    printf("%d\n", check);
    exit(1);
}
else if (pid > 0)
{
    char get = ' ';
    int check;
    close(comm[1]);
    printf("hello from parent\n");
    printf("trying to receive...\n");
    read(comm[0], &get, 2);
    printf("received: %c\n", get);
    printf("reaping child\n");
    wait(NULL);
    return 0;
}

return 0;

}

你的管子和叉子的順序錯了! 您的進程分叉,然后兩個進程都調用管道,因此正在創建2個單獨的管道。 你寫的那個人沒有人讀它,而你正在讀的那個沒有寫任何東西。

暫無
暫無

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

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