当前位置: 首页> 汽车> 车展 > pageadmin是免费的吗_排名做网站优化_网站seo优化怎么做_社交媒体营销

pageadmin是免费的吗_排名做网站优化_网站seo优化怎么做_社交媒体营销

时间:2025/7/12 9:27:51来源:https://blog.csdn.net/m0_74224228/article/details/143178323 浏览次数: 0次
pageadmin是免费的吗_排名做网站优化_网站seo优化怎么做_社交媒体营销

匿名管道:

pipe()函数可用于创建一个管道,以实现进程间的通信。

头文件是#include<unistd.h>,参数是int类型的数组
fd[0]表示读端
fd[1]表示写端

 如下代码使用pipe函数创建管道,并打印出来,最后关闭终端。
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{int ret;int fd[2];ret=pipe(fd);if(ret==-1){printf("create pipe failed!\n");exit(1);}printf("pipe[0] is %d\n",fd[0]);printf("pipe[1] is %d\n",fd[1]);close(fd[0]);close(fd[1]);return 0;
}
打印出来的读端是3,写端是4 

 

这是因为系统的文件描述符前3个已经有对应的标准IO。

 如下代码是使用pipe创建管道完成父子进程管道通信实现 ps aux| grep "bash" 数据重定向:dup2)

1.父进程是写端,就要先关闭读端(close(f[0])),然后对写端进行数据重定向设置为标准输出,
用execlp函数在代码里执行代码
2.子进程是读端,就要先关闭写端(close(f[1])),然后对读端进行数据重定向设置为标准输入,
用execlp函数在代码里执行代码
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{int ret;int fd[2];ret=pipe(fd);if(ret==-1){printf("create pipe failed!\n");exit(1);}pid_t pid =fork();if(pid==-1){printf("create porcess failed");exit(1);}if(pid>0){close(fd[0]);dup2(fd[1],STDOUT_FILENO);                                                            execlp("ps","ps","aux",NULL);perror("execlp");exit(1);}else if(pid==0){close(fd[1]);dup2(fd[0],STDIN_FILENO);execlp("grep","grep","bash",NULL);perror("execlp");exit(1);}printf("pipe[0] is %d\n",fd[0]);printf("pipe[1] is %d\n",fd[1]);close(fd[0]);close(fd[1]);return 0;
}
运行代码后可以看到完成父子进程的通信实现了ps aux | grep bash 。

 

关键字:pageadmin是免费的吗_排名做网站优化_网站seo优化怎么做_社交媒体营销

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: