IO day4

int main(int argc, const char *argv[])
{
    int pd=fork();
    if(pd==-1)
    {
        perror("open:");
        return 1;
    }
    if(pd>0)
    {
        int fd=open("./homework.txt",O_WRONLY|O_CREAT,0666);
        if(fd==-1)
        {
            perror("open:");
            return 1;
        }
        int arr[2]={0};
        for(int i=0;i<2;i++)
        {
            if(i==0)
            {                                                                   
                printf("please enter length");
            }
            else
            {
                printf("please enter width:");
            }
            scanf("%d",&arr[i]);
            while(getchar()!='\n');
            write(fd,arr+i,4);
        }
        close(fd);
        wait(0);
    }
    else if(pd==0)
    {
        sleep(3);
        int fd=open("./homework.txt",O_RDONLY);
        if(fd==-1)
        {
            perror("open:");
            return 1;
        }
        int arr[2]={0};
        for(int i=0;i<2;i++)
        {
            read(fd,arr+i,4);
        }
        close(fd);
        printf("长方形的面积为:%d\n",arr[0]*arr[1]);
        return 0;
    }
    return 0;
}

 ①    标准IO和文件IO的区别
 《1》每调用文件IO的函数一次,就要访问一次磁盘,导致文件IO的效率低下                                   
 标准IO是将数据先写入缓存区,满足特定条件后再将缓存区的所有数据写入磁盘
 ,减少了对磁盘的访问次数。所以效率比文件IO高
 《2》
 
 ②    文件IO和标准IO都是如何管理读写光标
 
       标准IO调用函数fopen打开文件时文件打开方式不同光标定位不同
 以只读的形式打开(r),成功打开后光标定位在文件中第一个数据脸上
 以可读可写形式打开文件(r+),成功打开后读写光标独立,读光标在文件中第一个数据脸上,写光标在文件结束符脸
 以只写的形式打开文件(w),成功打开后光标定位在文件中第一个数据脸上
 以可读可写形式打开文件(w+),成功打开后读写光标独立,读光标在文件中第一个数据脸上,写光标在文件
 以追加写的形式打开文件(a),成功打开后光标位于文件尾部结束符脸上
 以可读追加写的形式打开文件(a+), 成功打开后读光标在文件中第一个数据脸上,写光标在文件结束符脸上
 
 ③   反复open同一个文件,读写光标是共享还是独立  
                独立
 
 ④    标准IO缓存类型,分别对应那些文件,分别多大
 标准IO缓存区分为 行缓存,全缓存,无缓存 三类
 行缓存
 只有标准输出流stdout使用行缓存,具体来说就是只有流向终端的标准输出流才使用行缓存
 全缓存 
 所有通过fopen 函数打开的文件都是使用的全缓存
 无缓存、
 只有标准错误流stderr使用的无缓存,集体来说就是只有流向终端的标准错误流才使用无缓存
 ⑤    总结fopen函数打开失败的原因
 
 
 
 ⑥    标准IO的行缓存和全缓存的刷新机制
 行缓存的刷新机制:①  遇到回车刷新
                   ②  缓存区满以后刷新
                   ③ 程序结束以后刷新缓存
                   ④ IO关闭,刷新缓存
                   ⑤ IO切换,刷新缓存
                   ⑥ 手动调用函数 fflush(FILE*)
 全缓存的刷新机制:  除了遇到回车不刷新缓存,其他和行缓存数字新机制相同
 无缓存 : 没有缓存刷新机制
 
 ⑦    open函数里面,NOFOLLOW这个宏有什么作用
 
      :打开的是快捷方式本身还是
 ⑧    假设现在有两个描述符 fd1 和fd2,dup2(fd1,fd2)和fd1==fd2的区别
      

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值