做网站用com还是cn好,网站的专区怎么建设,企业管理咨询有限公司经营范围,做淘宝客网站需要做后台吗实现AB进程对话。 A进程发送一句话后#xff0c;B进程接收到打印。然后B进程发送一句话#xff0c;A进程接收后打印 重复上述步骤。直到AB接收或者发送完quit后#xff0c;结束AB进程 A进程
#include stdio.h
#include sys/types.h
#include sys/stat.… 实现AB进程对话。 A进程发送一句话后B进程接收到打印。然后B进程发送一句话A进程接收后打印 重复上述步骤。直到AB接收或者发送完quit后结束AB进程 A进程
#include stdio.h
#include sys/types.h
#include sys/stat.h
#include fcntl.h
#include unistd.h
#include errno.h
#include string.hint main(int argc, const char *argv[])
{//创建管道fifo1if(mkfifo(./zuoye_fifo1, 0664) 0){if(errno ! EEXIST){perror(mkfifo);return -1;}}printf(fifo1创建成功\n);//创建管道fifo2if(mkfifo(./zuoye_fifo2, 0664) 0){if(errno ! EEXIST){perror(mkfifo);return -1;}}printf(fifo2创建成功\n);//写int fo open(./zuoye_fifo1, O_WRONLY);if(fo 0){perror(open);return -1;}printf(open wronly success\n);//读int fo2 open(./zuoye_fifo2, O_RDONLY);if(fo 0){perror(open);return -1;}printf(open rdonly success\n);char buf[200] ;ssize_t res 0;while(1){//写printf(请输入数据);fgets(buf, sizeof(buf), stdin); //从终端获取数据buf[strlen(buf)-1] \0;if(write(fo, buf, sizeof(buf)) 0){perror(write);return -1;}printf(写入成功\n);if(strcmp(buf, quit) 0)break;//读bzero(buf, sizeof(buf));//读写端均存在管道中没有数据read函数阻塞res read(fo2, buf, sizeof(buf));if(res 0){perror(read);return -1;}else if(res 0){printf(写端关闭且管道中没有数据\n);break;}printf(%ld%s \n, res, buf);if(strcmp(buf, quit) 0)break;}close(fo);return 0;
}
B进程
#include stdio.h
#include sys/types.h
#include sys/stat.h
#include fcntl.h
#include unistd.h
#include errno.h
#include string.hint main(int argc, const char *argv[])
{//创建管道fifo1if(mkfifo(./zuoye_fifo1, 0664) 0){if(errno ! EEXIST){perror(mkfifo);return -1;}}printf(fifo1创建成功\n);//创建管道fifo2if(mkfifo(./zuoye_fifo2, 0664) 0){if(errno ! EEXIST){perror(mkfifo);return -1;}}printf(fifo2创建成功\n);//读int fo open(./zuoye_fifo1, O_RDONLY);if(fo 0){perror(open);return -1;}printf(open rdonly success\n);//写int fo2 open(./zuoye_fifo2, O_WRONLY);if(fo 0){perror(open);return -1;}printf(open wronly success\n);char buf[200] ;ssize_t res 0;while(1){//读bzero(buf, sizeof(buf));//读写端均存在管道中没有数据read函数阻塞res read(fo, buf, sizeof(buf));if(res 0){perror(read);return -1;}else if(res 0){printf(写端关闭且管道中没有数据\n);break;}printf(%ld%s \n, res, buf);if(strcmp(buf, quit) 0)break;//写printf(请输入数据);fgets(buf, sizeof(buf), stdin); //从终端获取数据buf[strlen(buf)-1] \0;if(write(fo2, buf, sizeof(buf)) 0){perror(write);return -1;}printf(写入成功\n);if(strcmp(buf, quit) 0)break;}close(fo);return 0;
}