linux c学习笔记----管道文件(pipe,popen,mkfifo,pclose,dup2)

本文详细介绍了Linux C编程中管道(pipe)的创建与使用,包括pipe()函数、mkfifo()、popen()、pclose()以及dup2()函数的用法。通过实例展示了如何进行进程间通信,以及文件描述词的复制和重定向操作。
摘要由CSDN通过智能技术生成

pipe(建立管道)

相关函数
mkfifo,popen,read,write,fork
表头文件
#include<unistd.h>
定义函数
int pipe(int filedes[2]);
函数说明
pipe()会建立管道,并将文件描述词由参数filedes数组返回。filedes[0]为管道里的读取端,filedes[1]则为管道的写入端。
返回值
若成功则返回零,否则返回-1,错误原因存于errno中。
错误代码
EMFILE 进程已用完文件描述词最大量。
ENFILE 系统已无文件描述词可用。
EFAULT 参数filedes数组地址不合法。
范例
/* 父进程借管道将字符串“hello!\n”传给子进程并显示*/
#include <unistd.h>
main()
{
int filedes[2];
char buffer[80];
pipe(filedes);
if(fork()>0){
/* 父进程*/
char s[ ] = “hello!\n”;
write(filedes[1],s,sizeof(s));
}
else{
/子进程/
read(filedes[0],buffer,80);
printf(“%s”,buffer);
}
}
执行
hello!

实例:

#include <stdio.h>  
#include <stdlib.h>  
#include <unistd.h>  
#include <string.h>  
#include <errno.h>  
#include <sys/types.h>  
#include <sys/wait.h>  
#define BUFFER 255  
  
int main(int argc, char **argv) {  
    char buffer[BUFFER + 1];  
    int fd[2];  
    if (argc != 2) {  
        fprintf(stderr, "Usage:%s string\n\a", argv[0]);  
        exit(1);  
    }  
    if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值