小编Кир*_*шов的帖子

FIFO 通道读取不正确

我有 2 个不相关的进程。第一个创建一个 FIFO 通道并将数据写入其中。

测试组合:

int main(int argc, char *argv[])
{
    int f1;
    char *send_buf = "Hello";
    char recv_buf[128] = {0};

    if (mkfifo("mk.fifo", S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) == -1 && errno != EEXIST)
        error(0, errno, "mkfifo() error");

    f1 = open("mk.fifo", O_RDWR);
    perror("Opening ");

    printf("Sending string '%s'...\n", send_buf);
    write(f1, send_buf, strlen(send_buf));
    perror("Writing ");

    close(f1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

第二个进程应该从先前创建的通道读取数据。

test2comp:

int main(int argc, char *argv[])
{
    int f2;
    char recv_buf[128] = {0};

    f2 = open("mk.fifo", O_RDONLY|O_NONBLOCK);
    perror("Opening "); …
Run Code Online (Sandbox Code Playgroud)

c linux named-pipes fifo

3
推荐指数
1
解决办法
92
查看次数

标签 统计

c ×1

fifo ×1

linux ×1

named-pipes ×1