IO重定向

# include <unistd.h>

int dup2(int oldfd, int newfd);

image.png 复制文件描述符4的内容到1,并且关闭1
,因为引用计数为0

标准IO

每个C程序开始都有过三个打开的流

# include <stdio.h>
extern FILE *stdin;
stdout , stderr;

image.png

小结

  • 如果可以使用标准IO就是用标准IO
  • 不要使用scanf 和 rio_readlineb 读取二进制文件
    因为其中的OXa自己和结束文本行无关
  • 对于同意打开的套接字描述符打开两个流
    FILE *fpin, *fpout;
    fpin = fdopen(sockfd,"r");
    fpout = fdopen(sockfd,"w");
    //需要避免内存泄漏
    fclose(fpin);
    //这个操作可能会失败 因为上一次的流已经被关闭了
    close(fpout);