C 编写和读取命名管道

C 编写和读取命名管道,c,linux,pipe,named-pipes,mkfifo,C,Linux,Pipe,Named Pipes,Mkfifo,我想通过管道写作和阅读。我已经用C写了一段代码,它被成功编译了,但是当我运行它时。/write它有运行时错误。这是我的读写代码 #include<stdio.h> #include<sys/stat.h> #include<sys/types.h> #include<fcntl.h> #include<unistd.h> int main(void) { int fd, retval; char buffer[] =

我想通过管道写作和阅读。我已经用C写了一段代码,它被成功编译了,但是当我运行它时。/write它有运行时错误。这是我的读写代码

#include<stdio.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
#include<unistd.h>

int main(void) {
    int fd, retval;
    char buffer[] = "TESTDATAAA";
    
    fflush(stdin);
    retval = mkfifo("/temp/myfifo",0666);
    fd = open("/temp/myfifo",O_WRONLY);
    write(fd,buffer,sizeof(buffer));
    close(fd);
    return 0;
}
#包括
#包括
#包括
#包括
#包括
内部主(空){
int-fd,retval;
字符缓冲区[]=“TESTDATAAA”;
fflush(stdin);
retval=mkfifo(“/temp/myfifo”,0666);
fd=打开(“/temp/myfifo”,仅限O_wr);
写入(fd,buffer,sizeof(buffer));
关闭(fd);
返回0;
}
#包括
#包括
#包括
#包括
#包括
int main(){
int-fd,retval;
字符缓冲区[]=“TESTDATA”;
fd=打开(“/temp/myfifo”,仅限Ordu);
retval=read(fd,buffer,sizeof(buffer));
fflush(stdin);
写入(1,buffer,sizeof(buffer));
printf(“\n”);
关闭(fd);
返回0;
}
任何帮助都将不胜感激。

什么也不做与“有运行时错误”截然不同。如果运行
/write
,并且程序块被阻塞,则这是预期的行为。在其他进程打开fifo进行读取之前,
fopen
不会返回


打开第二个终端,在生产者运行时执行消费者。

(解码器就是
1
#include<stdio.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
#include<unistd.h>

int main() {
    int fd, retval;
    char buffer[] = "TESTDATA";
    
    fd = open("/temp/myfifo",O_RDONLY);
    retval = read(fd, buffer, sizeof(buffer));
    fflush(stdin);
    write(1, buffer, sizeof(buffer));
    printf("\n");   
    close(fd);
    return 0;
}