实验 9-1 1. 实现以下功能 a) 调用 pipe()创建无名管道 b) 调用 fork 创建一个子进程 c) 在子进程中向管道内写入 128k 数据,打印出进程号及成功写入的字节数 d) 在父
来源:互联网 发布:ubuntu怎么进入文件夹 编辑:程序博客网 时间:2024/06/05 06:47
实验 9-1 1. 实现以下功能a) 调用 pipe()创建无名管道b) 调用 fork 创建一个子进程c) 在子进程中向管道内写入 128k 数据,打印出进程号及成功写入的字节数d) 在父进程中从管道读出数据,每次读 16k,打印出进程号、每次读出的字节数及读出的内容e) 以 O_NDELAY 或 O_NONBLOCK 的方式向管道中写, 重新实现以上功能#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <stdlib.h>#include <fcntl.h>#define K 1024#define WRITELEN (128*K)int main(){int result = -1;int p[2],nbytes;pid_t pid;char string[WRITELEN] = "helloworld";char readbuffer[16*K];pipe(p);//fcntl(p[0], F_SETFL, O_NDELAY);//fcntl(p[1], F_SETFL, O_NDELAY);//fcntl(p[0], F_SETFL, O_NONBLOCK);//fcntl(p[1], F_SETFL, O_NONBLOCK);pid = fork();if(0 == pid) {printf("....begin writing....\n");result = write(p[1], string, WRITELEN);printf("....wrote %d bytes, %d bytes left!\n",result,WRITELEN-result);return 0;}else {close(p[1]);printf("pid is %d\n",getpid());while(1) {nbytes = read(p[0], readbuffer, sizeof(readbuffer)); printf("read %d bytes, \"%s\"\n",nbytes, readbuffer);sleep(1);if(nbytes <= 0)break;}}return 0;}
阅读全文
0 0
- 实验 9-1 1. 实现以下功能 a) 调用 pipe()创建无名管道 b) 调用 fork 创建一个子进程 c) 在子进程中向管道内写入 128k 数据,打印出进程号及成功写入的字节数 d) 在父
- ★实验 9-2 1.补全代码,实现以下功能 a)调用pipe()创建无名管道 b)调用fork创建一个子进程 c)在父进程中向管道写入 “helloworld”, 同时打印出PID和写入
- linux c之管道的介绍、创建关闭和简单读写(父进程向子进程写入数据)
- fork创建子进程利用pipe管道通信
- fork创建子进程利用pipe管道通信
- TCP编程中,在server端调用fork创建子进程,在子进程中接收/处理外部数据。
- Linux 调用fork()创建两个子进程
- 为什么fork创建子进程后,父进程中运行过的代码在子进程中不再运行了
- Linux c 匿名管道实例—创建两个子进程与父进程进行管道通信
- 进程通信-无名管道PIPE
- fork产生子进程利用pipe管道通信
- fork产生子进程利用pipe管道通信
- ★实验 8-2 1. 创建两个守候进程。每个守候进程各自创建独立的日志文件。 2. 每隔 1s 向日志文件中写入如下信息: a) 守候进程 1:未使用的内存大小(MemFree) b) 守
- fork创建子进程
- fork创建子进程
- fork创建子进程
- fork()创建子进程
- wait函数在fork创建子进程后的使用
- ubuntu ssh使用详解
- HDU 2141 详解
- 金融风控-->申请评分卡模型-->特征工程(特征分箱,WOE编码)
- Trip report: Summer ISO C++ standards meeting (Toronto)
- css基础样式
- 实验 9-1 1. 实现以下功能 a) 调用 pipe()创建无名管道 b) 调用 fork 创建一个子进程 c) 在子进程中向管道内写入 128k 数据,打印出进程号及成功写入的字节数 d) 在父
- 死锁的四个必要条件
- EMC的一个笔试题目
- Linux下RTC驱动的简单分析
- ★实验 9-2 1.补全代码,实现以下功能 a)调用pipe()创建无名管道 b)调用fork创建一个子进程 c)在父进程中向管道写入 “helloworld”, 同时打印出PID和写入
- Gradle for Android-高级Build和自定义
- ★实验9-3 1.用不同的方案实现两个命令的连接,例如 “who|sort”、“ps aux | grep init” 源程序: #include <stdio.h> #include <sys
- 【Nginx】Nginx优秀特点
- 【spring MVC】数据校验