作业1
题目
结果
代码
write_fifo.c
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char const *argv[])
{
pid_t pid;
int fd;
char buf[1024];
// 开启有名管道
if (mkfifo(argv[1], 0666) < 0 && errno != EEXIST) {
perror("mkfifo()");
return -1;
}
fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0666);
while (1) {
fgets(buf, sizeof(buf), stdin);
write(fd, buf, sizeof(buf));
if (!strncmp(buf, "quit",4))
break;
}
return 0;
}
read_fifo.c
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char const *argv[])
{
pid_t pid;
int fd;
char buf[1024];
// 开启有名管道
if (mkfifo(argv[1], 0666) < 0 && errno != EEXIST) {
perror("mkfifo()");
return -1;
}
fd = open(argv[1], O_RDONLY);
while (1) {
read(fd, buf, sizeof(buf));
if (!strncmp(buf, "quit",4))
break;
printf("read: %s",buf);
}
return 0;
}