使用socketpair进行父子进程通信
2016-11-03 14:19
405 查看
代码比较简单
测试结果:
$ make test
cc test.c -o test
$ ./test
Sending data: 1
Data received: 2
Sending data: 3
Data received: 4
Sending data: 5
Data received: 6
Sending data: 7
Data received: 8
Sending data: 9
Data received: 10
Sending data: 11
Data received: 12
Sending data: 13
Data received: 14
#include <sys/types.h> #include <sys/socket.h> #include <stdlib.h> #include <stdio.h> int main () { int fd[2]; int r = socketpair( AF_UNIX, SOCK_STREAM, 0, fd ); if ( r < 0 ) { perror( "socketpair()" ); exit( 1 ); } if ( fork() ) { /* Parent process: echo client */ int val = 0; close( fd[1] ); while ( 1 ) { sleep( 1 ); ++val; printf( "Sending data: %d\n", val ); write( fd[0], &val, sizeof(val) ); read( fd[0], &val, sizeof(val) ); printf( "Data received: %d\n", val ); } } else { /* Child process: echo server */ int val; close( fd[0] ); while ( 1 ) { read( fd[1], &val, sizeof(val) ); ++val; write( fd[1], &val, sizeof(val) ); } } }
测试结果:
$ make test
cc test.c -o test
$ ./test
Sending data: 1
Data received: 2
Sending data: 3
Data received: 4
Sending data: 5
Data received: 6
Sending data: 7
Data received: 8
Sending data: 9
Data received: 10
Sending data: 11
Data received: 12
Sending data: 13
Data received: 14
相关文章推荐
- linux进程通信之使用匿名管道进行父子进程通信
- [Linux管道和IPC]使用信号量和共享内存进行父子进程通信
- C#使用匿名管道在本地进程之间进行通信
- 嵌入式web服务器后台cgi使用socket与其他进程进行通信的源码
- 【Android开发艺术探索】IPC机制(四)-使用AIDL进行跨进程通信
- 简述使用Messenger进行进程间的通信
- linux进程间的通信(C): 使用信号量进行同步的共享内存机制
- C#中使用SendMessage进行进程通信,可以发送字符串。
- linux进程间的通信(C): 使用信号量进行同步的共享内存机制
- 简单的,使用套接字进行TCP通信(使用进程实现并发)。
- 父子进程之际使用sig来通信
- C#使用命名管道通过网络在进程之间进行通信
- C#中使用命名管道进行进程通信的实例
- linux进程通信:使用posix消息队列mq进行线程或进程间的通信
- 使用pipe()与fork()函数通过管道实现父子进程之间的通信
- [ZZ]使用命名管道通过网络在进程之间进行通信
- 如何:使用匿名管道在本地进程之间进行通信(C#)
- 使用AIDL来进行跨进程通信
- 使用FIFO来进行两个进程间的通信
- Linux c==使用父子进程实现TCP通信(15)