写入和读取命名管道
Writing and reading named pipes
我想从管道写入和读取。我用 C 语言编写了一个代码,它编译成功但是当我 运行 它由 ./write 时它有 运行time error 。这是我的读写代码。
#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;
}
#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;
}
任何帮助将不胜感激。
“什么都不做”与“运行时间错误”有很大不同。如果您 运行 ./write
并且程序阻塞,这是预期的行为。在其他进程打开 fifo 进行读取之前,fopen
不会 return。
打开第二个终端并在生产者 运行ning 时执行您的消费者。
我想从管道写入和读取。我用 C 语言编写了一个代码,它编译成功但是当我 运行 它由 ./write 时它有 运行time error 。这是我的读写代码。
#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;
}
#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;
}
任何帮助将不胜感激。
“什么都不做”与“运行时间错误”有很大不同。如果您 运行 ./write
并且程序阻塞,这是预期的行为。在其他进程打开 fifo 进行读取之前,fopen
不会 return。
打开第二个终端并在生产者 运行ning 时执行您的消费者。