aihot  2020-11-12 11:19:17  OpenCV |   查看评论   

 《TCPL》 第8章 Unix系统接口

8.1 文件描述符

UNIX操作系统中,所有的外围设备(包括键盘和显示器)都被看作是文件系统中的文件。系统通过文件描述符来标识文件:标准输入为0,标准输出为1,标准错误为2。

当的输入/输出被重定向时,shell把文件描述符0和1的默认赋值改变为指定的文件。

8.2 低级I/o——read和write

read和write是UNIX的两个系统调用,这两个函数中,第一个参数是文件描述符,第二个参数是程序中存放读或写的数据的字符数组,第三个参数是要传输的字节数。

int read(int fd,char *buf,int n); int write(int fd,char *buf,int n);

每个调用返回实际传输的字节数。在读文件时,函数的返回值可能会小于请求的字节数,如果返回0,则表示已经达文件的结尾;如果返回-1,则表示发生了某种错误。在写文件时,返回值是实际写入的字节数。如果返回值与请求写入的字节数不相等,则说明发生了错误。

下面是用read和write构造getchar的两个版本:

第一个版本:它通过每次从标准输入读入一个字符来实现无缓冲输入

#include "syscalls.h" int getchar(void) {     char ch;     return (read(0,&ch,1))==1?(unsigned char)ch:EOF; }

第二个版本:每次读入一组字符,但是每次只输出一个字符

#include "syscalls.h" int getchar(void) {     static char buf[BUFSIZ];                 
          
 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自《TCPL》 第8章 Unix系统接口

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]