1、设计程序A和程序B,程序B每隔100ms向有名管道写入一个随机整数(值为0~100),程序A循环读取并打印有名管道数据,当连续出现3个50以上的数据时打印提示信息并暂停程序B,延时5s后继续启动程序B,然后继续读取数据。
有名管道通信;随机数产生
rand():
它返回的最大值是RAND_MAX
srand ((int) time());
// 产生一个随机的随机数生成种子
i = (int)(100 * rand() /RAND_MAX);
— >0 – 100
i=rand()%100;
//取模
有名管道通信:
1)创建FIFO文件
#define FIFO_FILE_NAME “/tmp/my_fifo”
在B程序中:
mkfifo (FIFO_FILE_NAME, 0777); // 创建了一个管道文件,由最高权限
2)打开:读打开或者写打开
int fd;
fd = open(FIFO_FILE_NAME, O_WRONLY);//写打开
i = getpid(); //B的进程号 --发给A
write (fd, &i, sizeof(int));
while (1){
//i = (int)(100 * rand() /RAND_MAX);//随机写随机数
i=rand()%100;
write (fd, &i, sizeof(int));
sleep (1);//定时一百毫秒 延时1
}