📄 p12-1.c
字号:
#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include "err_exit.h"#define DATA1 "Fine,thanks."#define DATA2 "Hello,how are you?"int main(void){ int sockets[2], child; char buf[1024]; /* 创建套接字偶对 */ if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockets) < 0) err_exit("socketpair error"); /* 创建子进程*/ if ((child = fork()) == -1) err_exit("fork error "); if (child != 0) { /* 这是父进程 */ /* 关闭子进程的套接字 */ close(sockets[0]); /* 读来自子进程的消息 */ if (read(sockets[1], buf, sizeof(buf)) < 0) err_exit("reading socket error"); printf("parent process %d received request: %s\n", getpid(),buf); /* 向子进程写消息 */ if (write(sockets[1], DATA1, sizeof(DATA1)) < 0) err_exit("writing socket error"); /* 通讯结束 */ close(sockets[1]); } else { /* 子进程 */ /* 关闭父进程的套接字端 */ close(sockets[1]); /* 发送消息给父进程 */ if (write(sockets[0], DATA2, sizeof(DATA1)) < 0) err_exit("writing socket error"); /* 读来自父进程的消息 */ if (read(sockets[0], buf, sizeof(buf)) < 0) err_exit("reading socket error"); printf("child process %d received answer: %s\n", getpid(),buf); /* 通讯结束 */ close(sockets[0]); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -