linux编程---进程通信中,利用socketpair实现子进程间通信
2017-08-07 10:47
661 查看
#include <sys/types.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <stdio.h>
int main ()
{
int fd1[2];
int r = socketpair( AF_UNIX, SOCK_STREAM, 0, fd1 );
if ( r < 0 ) {
perror( "socketpair()" );
exit( 1 );
}
int val = 0;
pid_t pid1 = fork();
if(pid1 == 0)
{
close(fd1[1]);
while(1){
sleep(1);
write( fd1[0], &val, sizeof(val) );
read( fd1[0], &val, sizeof(val) );
printf("child1 read [%d]\n",val);
val++;
}
}
pid_t pid2 = fork();
if(pid2 == 0)
{
close(fd1[0]);
while(1){
read( fd1[1], &val, sizeof(val) );
printf("child2 read [%d]\n",val);
val++;
write( fd1[1], &val, sizeof(val) );
}
}
}
#include <sys/socket.h>
#include <stdlib.h>
#include <stdio.h>
int main ()
{
int fd1[2];
int r = socketpair( AF_UNIX, SOCK_STREAM, 0, fd1 );
if ( r < 0 ) {
perror( "socketpair()" );
exit( 1 );
}
int val = 0;
pid_t pid1 = fork();
if(pid1 == 0)
{
close(fd1[1]);
while(1){
sleep(1);
write( fd1[0], &val, sizeof(val) );
read( fd1[0], &val, sizeof(val) );
printf("child1 read [%d]\n",val);
val++;
}
}
pid_t pid2 = fork();
if(pid2 == 0)
{
close(fd1[0]);
while(1){
read( fd1[1], &val, sizeof(val) );
printf("child2 read [%d]\n",val);
val++;
write( fd1[1], &val, sizeof(val) );
}
}
}
相关文章推荐
- linux网络编程:使用单进程实现多客户端通信
- linux中利用有名管道实现进程之间的通信
- DirectX编程:C#中利用Socket实现网络语音通信[初级版本]
- 利用socket实现vc++与.NET进程间的通信
- Linux下的C编程入门之进程控制与进程通信编程
- 【嵌入式Linux学习七步曲之第七篇 Linux的高级应用编程】进程间的通信机制
- Linux下的C编程实战(三)――进程控制与进程通信编程 推荐
- DirectX编程:C#中利用Socket实现网络语音通信
- UNIX环境高级编程学习之第十五章进程间通信 - 通过半双工匿名管道实现父子进程通信
- 在Linux中实现内部进程通信
- 在Linux中实现内部进程通信
- 在 Linux 上实现基于 Socket 的多进程实时通信
- UNIX环境高级编程学习之第十五章进程间通信 - 两个进程通过映射普通文件实现共享内存通信
- 2010-07-23 Linux C 进程通信编程
- 在 Linux 上实现基于 Socket 的多进程实时通信
- Linux下C语言编程--进程通信、消息管理
- Linux中实现内部进程通信
- 利用VB.Net编程实现PC与掌上电脑PPC间的双向通信
- DirectX编程:C#中利用Socket实现网络语音通信
- DirectX编程:C#中利用Socket实现网络语音通信[初级版本]