文件描述符 fd

open()会返回一个文件描述符

其实就是个int

我们第一次调用open() 返回的数字是3

因为0,1,2都已经被占用了

0—stdin,标准输入流
1—stdout,标准输出流
2—stderr,标准错误流

下面搞点例子理解一下:

1、标准输出
ls > l.txt

这就是把ls 的内容通过管道传输给l.txt

而ls 的内容对应的即标准输出stdout

像我们print()出来的内容也是在标准输出中

所以我们大可以用dup2()把标准输出与具体文件连接在一起

然后print()可以直接输出到文件里

2、标准输入

这样一来,标准输入大概也有一定认识了

对的,就是scanf()

我们同样可以借助dup2(),把stdin和具体文件连接起来

然后直接敲键盘输入内容到文本里

3、标准错误

至于stderr则是报错了

就我们运行c程序时报错时出来的错误信息

我们同样可以把他连接到具体文件

然后,就可以把错误信息保存起来了


最后,再提提多进程下的文件描述符

确实,子进程可以把全部变量都给赋值出来

但是,文件描述符本质就是一个int而已

进程有多个,但是文件描述符对应的像stdin,stdout,stderr 这样的文件流是唯一的

意思就是,进程可以把变量复制多份

但是,上面那些文件流其实是并不复制的,独一份~

也就是说,你在子进程移动文件指针的时候,主进程也会受到影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值