输入与输出

1、文件描述符(file descriptor)

文件描述符(file descriptor)通常是一个小的非负整数

2、标准输入、标准输出、标准出错

按惯例,每当运行一个新程序时,所有的shell都将为其打开三个文件描述符:标准输入(standard input)、标准输出(standard output)和标准出错(standard error)。

3、不用缓冲的I/O

函数open、read、write、lseek和close提供了不用缓冲的I/O,这些函数都使用文件描述符。

4、标准I/O

标准I/O函数提供一种对不用缓冲I/O函数的带缓冲的接口。<stdio.h>中包含了所有标准I/O函数的原型。

#include <stdio.h>
#include <unistd.h>

#define BUFFSIZE 4096

int main()
{
    char buf[BUFFSIZE];
    int n = 0;

    while ((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0)
    {
        if (write(STDOUT_FILENO, buf, n) != n)
        {
            printf("write error\n");
        }
    }
    
    if (n < 0)
    {
        printf("read error\n");
    }
}


代码知识:

1、STDIN_FILENO和STDOUT_FILENO定义在<unistd.h>头文件中,它们指定了标准输入和标准输出的文件描述符,它们的典型值为0和1。为了可读性,我们还是使用这两个名字。

2、read返回读取的字节数。如果到达文件尾,read返回0,程序停止。如果发生一个错误,read返回-1。

3、如果返回的数值小于想要读取的数值,这并不是一个错误。这有可能是我们接近文件结束(end-of-file),或者从一个管道(pipe)中读取,或者从终端读取,也有可能是被一个信号中断的缘故。

4、通过ctrl+D 可以键入文件结束字符。

5、通过以下方式可以将infile文件的内容复制到outfile文件中去

./a.out <infile > outfile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值