进程通信之管道
pipe创建无名管道
函 数 详 情 | 头文件:#include <unistd.h> pipe()函数创建无名管道 原型:int pipe(int *pipefd) 参数:int pipefd[2] --->pipefd[0] 代表管道的读端口 --->pipefd[1] 代表管道的写端口 返回值:成功 创建管道0 失败 返回值-1 功能:创建一个无名管道,通过参数来操作管道的读写端口 补充:使用的时候,一般先进程pipe(),然后再创建fork(),这样的话才能保证操作的是同一个管道。 |
示 例 | int pipefd[2]; int a; //pipe函数创建一个管道 a = pipe(pipefd); if(a == 0) { printf("pipe success\r\n"); } //读阻塞 read(pipefd[0],r_buf,sizeof(r_buf)); //写阻塞 write(pipefd[1],t_buf,sizeof(t_buf)); |
mkfifo创建命名管道
函 数 详 情 | 头文件: #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <stdio.h> 原型:int mkfifo(const char *pathname,mode_t mode) 参数: const char *pathname ---->文件的路径名 mode_t mode 期望创建管道文件的权限 返回值:成功 返回0 失败 返回-1 功能:创建pathname对应的管道文件,若成功,权限mode |
示 例 | //创建一个命名管道文件 a = mkfifo("./2.fifo",0664); if(a == 0) { printf("mkfifo success\r\n"); }else { printf("mkfifo error\r\n"); return -1; } |
unlink删除文件
函 数 详 情 | 原型:int unlink(const char *pathname) 参数:const char *pathname --->表示待删除文件的路径 返回值:成功删除 返回0 失败 -1 功能:unlink()会删除pathname指定的文件 |
示 例 | //删除一个命名管道文件 b = unlink("./2.fifo"); if(b == 0) { printf("unlink success\r\n"); } |
remove删除文件
函 数 详 情 | 原型:int remove(const char *pathname) const char *pathname --->要删除的文件的路径 参数和返回值与unlink()一致,remove函数可以删除文件夹的功能 |
示 例 |
popen打开标准流管道
函 数 详 情 | //popen---标准流管道 原型: FILE *popen(const char *command, const char *type) 参数: const char *command --->表示需要在子进程中执行的命令 const char *type --->“r” 可以用于返回文件的指针,读取标准的输出设备 --->"w" 可以用于返回文件的指针,写入标准的输入设备 返回值:文件指针 --第二个参数决定的 功能:在创建子进程中运行指定的命令,并创建标准管道 |
示 例 | FILE *fp; char buf[100]={0}; //调用一下popen fp = popen("ls","r"); //fread函数,读取fp里面的内容 fread(buf, 1,sizeof(buf), fp); printf("buf = %s\r\n",buf); |
pclose关闭标准流管道
函 数 详 情 | 原型:int pclose(FILE *stream) 参数:文件流指针 返回值:返回子进程结束的状态 功能:关闭管道文件 |
示 例 | fclose(fp); |
小广告(养家糊口):
1.好好学习,天天向上
2.上期商品:《富豪的赚钱秘籍》仅剩19本,如果需要购买,请关注博主然后私信
3.本次商品:《如何追女孩子》出售100本,先到先得。如果需要购买,请先关注博主,会有优惠,然后私信博主购买
4.下期商品关键字:MACD战法。