首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mkfifo读写错误

mkfifo读写错误
EN

Stack Overflow用户
提问于 2013-05-20 11:06:44
回答 1查看 1.5K关注 0票数 1

我不明白我做错了什么,请帮助我指出。我只是在这里提供输入,我正在尝试做的正是在程序中,所以它是容易理解的。我已经创建了3个命名管道,并将字符串"Hello, world!"写入了第一个命名管道myfifo.example。现在,我正在读取同一个命名管道,并试图将数据复制到第二个命名管道cmyfifo11。这种读和写是不可能的。它甚至不是印刷线(1)(2)。有人能请你纠正我吗。

代码语言:javascript
复制
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include<fcntl.h>
#include<string.h>

int main()
{
    int n, fd1, fd2;
    int pid,status;
    char    line[30]="Hello, world!\n";
    if (mkfifo("myfifo.example", 0660)<0)
        perror("Cannot create fifo");

    if (mkfifo("cmyfifo11", 0660)<0)
        perror("Cannot create fifo1");
    if (mkfifo("cmyfifo22", 0660)<0)
        perror("Cannot create fifo2");
    if((fd1= open("myfifo.example", O_RDWR))<0)
        perror("Cannot open fifo to write");  

    if ( (pid = fork()) < 0)
        perror("fork error");
    else if(pid==0){
        int z=write(fd1,line,strlen(line));
        printf("Write is done on myfifo.example\n");
        printf("CHILD PROCESS 1\n");
        fd2=open("cmyfifo11",O_RDWR);
        printf("Value of fd2=%d\n",fd2);
        if(fd2<0)
            printf("Cannot open cmyfifo11\n");
        printf("Reading\n");
        if((n=read(fd1,line,z))<0) /* Read and write is not happening */
            perror("Read error");
        printf("Value of n:%d with line %s\n",n);--->(1)
            int x=write(fd2,line,n);-------------->(2)
            printf("%d\n",x);

    }

    else if(pid>0){ printf("Parent area with %d\n",getpid());sleep(300);}
    printf("Common area\n");

    return 0;
}

输出是

代码语言:javascript
复制
Write is done on myfifo.example
CHILD PROCESS 1
Value of fd2=4
Reading
Parent area with 349
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-20 11:50:48

您有一个分段错误,因为您忘记将line传递给printf()

代码语言:javascript
复制
printf("Value of n:%d with line %s\n",n)

应该是

代码语言:javascript
复制
printf("Value of n:%d with line %s\n",n, line);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16648135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档