Linux进程通信之文件
父子进程共享打开的文件描述符------使用文件完成进程间通信.
/*** fork_share_fd.c ***/ #include <stdio.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #include <fcntl.h> #include <sys/wait.h> int main(void) { int fd1, fd2; pid_t pid; char buf[1024]; char *str = "---------test for shared fd in parent child process-----\n"; pid = fork(); if (pid < 0) { perror("fork error"); exit(1); } else if (pid == 0) { fd1 = open("test.txt", O_RDWR); if (fd1 < 0) { perror("open error"); exit(1); } write(fd1, str, strlen(str)); printf("child wrote over...\n"); } else { fd2 = open("test.txt", O_RDWR); if (fd2 < 0) { perror("open error"); exit(1); } sleep(1); //保证子进程写入数据 int len = read(fd2, buf, sizeof(buf)); write(STDOUT_FILENO, buf, len); wait(NULL); } return 0; }
运行结果:
ubuntu1604@ubuntu:~/wangqinghe/linux/20190806$ ./fork_share_fd
child wrote over...
---------test for shared fd in parent child process-----
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2018-08-06 1014 Waiting in Line (30)
2018-08-06 1057 Stack (30)