父进程写入 子进程读出 代码
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char const* argv[])
{
int fd;
char buf[124] = { 0 };
pid_t pid;
int n = 0;
if ((fd = open(argv[1], O_RDWR | O_CREAT | O_TRUNC, 0666)) == -1) {
perror("fail to open");
return -1;
}
pid = fork();
if (pid < 0) {
perror("fail to fork");
return -1;
} else if (pid > 0) {
while (1) {
memset(buf, 0, sizeof(buf));
fgets(buf, sizeof(buf), stdin);
if ((strncmp(buf, "quit", 4)) == 0) {
break;
}
n = write(fd, buf, strlen(buf));
lseek(fd, -n, SEEK_CUR);
}
} else if (pid == 0) {
while (1) {
usleep(100);
memset(buf,0,sizeof(buf));
if ((read(fd, buf, sizeof(buf))) == 0) {
continue;
}
printf("child_pid:%s", buf);
}
}
return 0;
}
结果