Linux 第二十四章

🐶博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍🔥专栏系列:线性代数C初学者入门训练题解CC的使用文章「初学」C++linux

🔥座右铭:“不要等到什么都没有了,才下定决心去做”

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

目录

fd的分配规则

重定向

dup2

命令行中的重定向

isspace

重定向的使用:就是<, >, >>等

那为什么要有2:标准错误

缓冲区

样例

理解样例(2中的样例)

什么叫作刷新

用户缓冲区和内核缓冲区


fd的分配规则

进程默认已经打开了0,1,2,我们可以直接使用0,1,2进行数据访问

[BCH@hcss-ecs-6176 11_28]$ cat myfile.c
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>


#define FILE_NAME "log.txt"
int main()
{
        char buf[1024];
        ssize_t s=read(0,buf,1024);
        //ssize_t有符号整型
        //read的返回值是实际读取的字节数,1024是我们设置最大读取的字节数,buf接收数据的缓冲区
        //从fd所指向的文件中读取数据放到buf中
        if(s>0)
        {
                buf[s]=0;//将中实际读取的最后一个字符尾加上0
                //printf("%s\n",buf);
                write(1,buf,strlen(buf));//将读取的buf的数据,输出到fd(1)指向的文件,1指向的就是标准输出流,屏幕
        }
        return 0;
}

文件描述符的分配规则:寻找最小的,没有被使用的数据位置,分配给指定的打开文件

[BCH@hcss-ecs-6176 11_28]$ cat myfile.c
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>

#define FILE_NAME "log.txt"
int main()
{
        close(0);//关闭fd==0的文件,标准输入流被关闭(键盘)

        int fd=open(FILE_NAME,O_CREAT | O_WRONLY | O_TRUNC,0666);
        if(fd<0)
        {
                perror("open");
                return 1;
        }

        printf("%s :fd:%d\n",FILE_NAME,fd);//输出被创建的FILE_NAME “log.txt"的文件描述符

        close(fd);
        return 0;
}

[BCH@hcss-ecs-6176 11_28]$ ./myfile
log.txt :fd:0//此时创建的文件的文件描述符为0

[BCH@hcss-ecs-6176 11_28]$ cat myfile.c
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>

#define FILE_NAME "log.txt"
int main()
{
        close(2);//关闭fd==2的文件,标准错误流流被关闭(屏幕)

        int fd=open(FILE_NAME,O_CREAT | O_WRONLY | O_TRUNC,0666);
        if(fd<0)
        {
                perror("open");
                return 1;
        }

        printf("%s :fd:%d\n",FILE_NAME,fd);//输出被创建的FILE_NAME “log.txt"的文件描述符

        close(fd);
        return 0;
}

[BCH@hcss-ecs-6176 11_28]$ ./myfile
log.txt :fd:2//此时创建的文件的文件描述符为2



[BCH@hcss-ecs-6176 11_28]$ cat myfile.c
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>


#define FILE_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值