本文主要是介绍管道的练习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
作业1:有名管道,创建两个发送接收端,父进程写入管道1和管道2,子进程读取管道2和管道1
创建两个有名管道文件
#include <myhead.h>int main(int argc, const char *argv[])
{if(mkfifo("./my_fifo",0664)== -1){perror("mkfifo");return -1;}if(mkfifo("./my_user",0664)== -1){perror("mkfifo");return -1;}return 0;
}
父线程发送信息,子线程接收信息
#include <myhead.h>int main(int argc, const char *argv[])
{pid_t id = fork();if (id > 0){int send;send = open("./my_fifo", O_WRONLY);//已只写打开管道if (-1 == send){perror("open send");return -1;}char buff[1024];while (1){int len = read(0, buff, sizeof(buff));buff[strlen(buff) - 1] = '\0';write(send, buff, len);//写入管道if (strcmp(buff, "quit") == 0){break;}}close(send);}else if (id == 0){int rev;rev = open("./my_user", O_RDONLY);//已只读打开if (-1 == rev){perror("open rev");return -1;}char buff[1024];while (1){//memset(buff,0,sizeof(buff));int len = read(rev, buff, sizeof(buff));//从管道读取if (strcmp(buff, "quit") == 0){break;}write(1, buff, len);//写入标准输出}close(rev);}else{perror("fork");return -1;}return 0;
}
在建一个代码和这个一样的文件,将发送接收的文件改一下就可以实现。
这篇关于管道的练习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!