父进程不断发送消息到子进程,子进程收到消息后发送回应;
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "common.h"
int main(void)
{
int subPid = 0;
int fd1[2] = {0}, fd2[2] = {0};
char readBuffer[BUFFER_SIZE];
char writeBuffer[BUFFER_SIZE];
int readLength = 0;
int writeLength = 0;
int ret = 0;
ret = pipe(fd1);
if (-1 == ret)
{
perror("");
return -1;
}
ret = pipe(fd2);
if (-1 == ret)
{
perror("");
return -1;
}
subPid = fork();
if (0 == subPid)
{
close(fd1[1]);
close(fd2[0]);
while (true)
{
readLength = read(fd1[0], readBuffer, BUFFER_SIZE);
if (0 > readLength)
{
perror("");
return -1;
}
else
{
printf("CHILD: Received message \"%s\"!\n", readBuffer);
strcpy(writeBuffer, "Replay from child!");
write(fd2[1], writeBuffer, strlen(writeBuffer));
}
}
}
else
{
close(fd1[0]);
close(fd2[1]);
int sendCount = 0;
while (true)
{
sprintf(writeBuffer, "Message from server (total: %d) !", ++sendCount);
write(fd1[1], writeBuffer, strlen(writeBuffer));
readLength = read(fd2[0], readBuffer, BUFFER_SIZE);
if (0 > readLength)
{
perror("");
return -1;
}
printf("PARENT: Received replay from child \"%s\"!\n", readBuffer);
usleep(1000000);
}
}
return 1;
}
分享到:
相关推荐
当使用半双工管道时,任何关联的进程都必须共享一个相关的祖先进程。因为管道存在于系统内核之中,所以任何不在创建管道的进程的祖先进程之中的进程都将无法寻址它。而在命名管道中却不是这样。管道实例见:pipe_rw....
6.2.5 关于半双工管道需要注意的几个 问题 233 6.3 命名管道 234 6.3.1 基本概念 234 6.3.2 创建FIFO 234 6.3.3 FIFO操作 235 6.3.4 FIFO上的阻塞动作 236 6.3.5 SIGPIPE信号 237 6.4 系统V IPC 237 6.4.1 基本概念...
6.2.5 关于半双工管道需要注意的几个 问题 233 6.3 命名管道 234 6.3.1 基本概念 234 6.3.2 创建FIFO 234 6.3.3 FIFO操作 235 6.3.4 FIFO上的阻塞动作 236 6.3.5 SIGPIPE信号 237 6.4 系统V IPC 237 6.4.1 基本概念...
6.2.5 关于半双工管道需要注意的几个 问题 233 6.3 命名管道 234 6.3.1 基本概念 234 6.3.2 创建FIFO 234 6.3.3 FIFO操作 235 6.3.4 FIFO上的阻塞动作 236 6.3.5 SIGPIPE信号 237 6.4 系统V IPC 237 6.4.1 基本概念...
管道,通常指无名管道,是UNIX系统IPC最古老的形式。1、特点: 它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。它...
6.2.5 关于半双工管道需要注意的几个 问题 233 6.3 命名管道 234 6.3.1 基本概念 234 6.3.2 创建FIFO 234 6.3.3 FIFO操作 235 6.3.4 FIFO上的阻塞动作 236 6.3.5 SIGPIPE信号 237 6.4 系统V IPC 237 6.4.1 基本概念...
6.2.5 关于半双工管道需要注意的几个问题 233 6.3 命名管道 234 6.3.1 基本概念 234 6.3.2 创建FIFO 234 6.3.3 FIFO操作 235 6.3.4 FIFO上的阻塞动作 236 6.3.5 SIGPIPE信号 237 6.4 系统V IPC 237 6.4.1 ...
6.2.5 关于半双工管道需要注意的几个 问题 233 6.3 命名管道 234 6.3.1 基本概念 234 6.3.2 创建FIFO 234 6.3.3 FIFO操作 235 6.3.4 FIFO上的阻塞动作 236 6.3.5 SIGPIPE信号 237 6.4 系统V IPC 237 6.4.1 基本概念...
26.4.5 半双工、一次一字符、一次 一行或行方式 304 26.4.6 同步信号 306 26.4.7 客户的转义符 306 26.5 Telnet举例 306 26.5.1 单字符方式 306 26.5.2 行方式 310 26.5.3 一次一行方式(准行方式) 312 26.5.4 行方式...
CruiseYoung提供的带有详细书签的电子书籍目录 ... 该资料是《TCP/IP详解 卷1:协议》的源代码 对应的书籍资料见: ... 26.4.5 半双工、一次一字符、一次一行或行方式 304 26.4.6 同步信号 306 26.4.7...
26.4.5 半双工、一次一字符、一次 一行或行方式 304 26.4.6 同步信号 306 26.4.7 客户的转义符 306 26.5 Telnet举例 306 26.5.1 单字符方式 306 26.5.2 行方式 310 26.5.3 一次一行方式(准行方式) 312 26.5.4 行...
26.4.5 半双工、一次一字符、一次 一行或行方式 304 26.4.6 同步信号 306 26.4.7 客户的转义符 306 26.5 Telnet举例 306 26.5.1 单字符方式 306 26.5.2 行方式 310 26.5.3 一次一行方式(准行方式) 312 26.5.4 行...
26.4.5 半双工、一次一字符、一次 一行或行方式 304 26.4.6 同步信号 306 26.4.7 客户的转义符 306 26.5 Telnet举例 306 26.5.1 单字符方式 306 26.5.2 行方式 310 26.5.3 一次一行方式(准行方式) 312 26.5.4 行...
26.4.5 半双工、一次一字符、一次 一行或行方式 304 26.4.6 同步信号 306 26.4.7 客户的转义符 306 26.5 Telnet举例 306 26.5.1 单字符方式 306 26.5.2 行方式 310 26.5.3 一次一行方式(准行方式) 312 26.5.4...