深入理解计算机第10章 --系统级I/O家庭作业

这里写图片描述

系统级I/O

Wercker Wercker Wercker
开工日期:2018年6月9号 完成日期:2018年?月?日 耗时:?日
配置:Ubuntu 64位+gcc4.8.5



10.6

#include "csapp.h"
int main()
{
    int fd1,fd2;

    fd1 = open("README",O_RDONLY,0);    //fd1 = 3
    fd2 = open("tiny.c",O_RDONLY,0);    //fd2 = 4
    close(fd2);                         //fd2被close
    fd2 = open("home.html",O_RDONLY,0); //fd2 = 4
    printf("fd2 = %d\n",fd2);
    exit(0);

    return 0;
}

这里写图片描述



带有缓冲的I/O和不带缓冲I/O的区别好文
10.7
tiny.tar,下载并解压,里面就有csapp.h和csapp.c。

gcc -c csapp.c

生成的csapp.o和你的源文件一起编译即可。(还要带上 -lpthread)。详细可见下方截图

#include "csapp.h"
int main()
{
    int n;
    rio_t rio;
    char buf[MAXBUF];

    rio_readinitb(&rio,STDIN_FILENO);
    while( (n = rio_readlineb(&rio,buf,MAXBUF)) != 0){
    rio_writen(STDOUT_FILENO,buf,n);
    }
    return 0;
}

这里写图片描述



10.8

#include "csapp.h"
int main(int argc,char **argv)
{
    struct stat Stat;
    char *type;
    char *readok;
    int fd1 = open(argv[1],O_RDONLY,0);

    fstat(fd1,&Stat);
    if(S_ISREG(Stat.st_mode))
        type = "regular";
    else if(S_ISDIR(Stat.st_mode))
    type = "directory";
    else
    type = "other";
    if((Stat.st_mode & S_IRUSR))
        readok = "yes";
    else
        readok = "no";

    printf("type: %s,read: %s\n",type,readok);
    close(fd1);
    return 0;
}

这里写图片描述



10.9

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值