Linux进程间的通信-基于有序文件(匿名管道)
2014-07-15 22:35
246 查看
写在前面:小生纯业余选手,开此博仅仅是为了积累,纯当笔记来用。如有看官光临小生博客,请不要相信我的代码就是正确的。如果您发现了错误也恳请耽误您一点时间,请您在下面指出来,不胜感激!
如果发现一些笔记的说法完全是错误的请建议我删除!
匿名管道就是没有名字得管道,通过pipe(fd)得以创建
这里貌似有点模糊
匿名管道应该打开了两个通道,一个用于写数据,一个用于读数据。这样多个进程可以同时打开一个匿名管道获取某一个通道来读写数据
先贴代码
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{
int fd[2];
char buf[20];
printf("%d\n",getpid());
int r = pipe(fd);
write(fd[1],"hello",5);
write(fd[1],"world",5);
r = read(fd[0],buf,20);
buf[r] = 0;
printf("%s\n",buf);
write(fd[1],"louis",5);
r = read(fd[0],buf,5);
buf[r] = 0;
printf("%s\n",buf);
return 0;
}
程序运行的时候hello不会被world覆盖
如果发现一些笔记的说法完全是错误的请建议我删除!
匿名管道就是没有名字得管道,通过pipe(fd)得以创建
这里貌似有点模糊
匿名管道应该打开了两个通道,一个用于写数据,一个用于读数据。这样多个进程可以同时打开一个匿名管道获取某一个通道来读写数据
先贴代码
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{
int fd[2];
char buf[20];
printf("%d\n",getpid());
int r = pipe(fd);
write(fd[1],"hello",5);
write(fd[1],"world",5);
r = read(fd[0],buf,20);
buf[r] = 0;
printf("%s\n",buf);
write(fd[1],"louis",5);
r = read(fd[0],buf,5);
buf[r] = 0;
printf("%s\n",buf);
return 0;
}
程序运行的时候hello不会被world覆盖
相关文章推荐
- Linux进程间的通信-基于有序文件
- linux的IPC进程通信方式-匿名管道(一)
- Linux进程通信之管道(匿名,命名)
- Linux(七):进程通信IPC(一)之简单的匿名管道编写
- LINUX 进程通信之匿名管道
- Linux——IPC 基于文件的通信(普通文件 管道文件)
- Linux下父子进程匿名管道通信
- linux进程通信之使用匿名管道进行父子进程通信
- linux学习---linux基于文件的IPC(匿名管道pipe,命名管道mkfifo,普通文件,socket文件)
- Linux进程通信----匿名管道
- Linux进程间的通信-基于无序文件
- [置顶] 【Linux】 进程通信--匿名管道
- Linux下父进程通过管道发送文件名给子进程,子进程获取文件名后首先判断文件是否存在,不存在,通过管道返回错误信息,存在,将文件内容返回给父进程
- 在 Linux 上实现基于 Socket 的多进程实时通信
- linux下父子进程间的通信——管道
- Linux进程通信-管道
- 如何:使用匿名管道在本地进程之间进行通信(C#)
- 在 Linux 上实现基于 Socket 的多进程实时通信
- linux进程通信--管道(pipe)(含实例代码)
- 匿名管道实现父子进程之间的通信....