需求
1、父进程写一段话,子进程将这段话读走并打印。
2、使用fork、read、write函数实现。
测试代码
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <fcntl.h>
int main(int argc, const char* argv[])
{
int fd = open("temp", O_CREAT | O_RDWR, 0664);
if(fd == -1)
{
perror("open error");
exit(1);
}
pid_t pid = fork();
if(pid == -1)
{
perror("fork error");
exit(1);
}
if(pid > 0)
{
char* p = "你是我儿子吗?";
write(fd, p, strlen(p)+1);
}
else if(pid == 0)
{
// 睡1s保证父进程已经完成了文件的写操作
sleep(1);
char buf[1024];
lseek(fd, 0, SEEK_SET);
int len = read(fd, buf, sizeof(buf));
printf("%s\n", buf);
}
close(fd);
return 0;
}
测试结果
关键代码分析
1、关于write函数
write(fd, p, strlen(p)+1);
将p中的内容写入到文件描述符中。
2、关于read函数
int len = read(fd, buf, sizeof(buf));
将文件描述符的内容写入到buf中。