子进程读取父进程数据
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
void ReadFile(int fd)
{
char buf[32] = {0};
lseek(fd, 0, SEEK_SET);
int ret = read(fd, buf, sizeof(buf));
if (-1 == ret)
{
perror("read");
exit(1);
}
printf("Child read from txt : %s\n", buf);
}
void WriteFile(int fd)
{
char buf[32] = "helloworld";
int ret = write(fd, buf, strlen(buf));
if (-1 == ret)
{
perror("write");
exit(1);
}
}
int main()
{
pid_t pid;
int fd;
fd = open("file.tmp", O_RDWR | O_CREAT | O_EXCL, S_IRWXU);
if (-1 == fd)
{
perror("open");
exit(1);
}
pid = fork();
if (-1 == pid)
{
perror("fork");
exit(1);
}
else if (0 == pid) //子进程读数据 子进程可以继承父进程已经打开的文件描述符
{
sleep(1);
ReadFile(fd);
}
else //父进程写数据
{
WriteFile(fd);
sleep(2);
}
return 0;
}