您的位置:首页 > 其它

笔记1-2: 将标准输入复制到标准输出

2013-05-21 17:28 309 查看
将标准输入复制到标准输出:

#include <apue.h>

#include <unistd.h>

#define BUFFSIZE 4096

int main(int argc, char ** argv)

{

int n;

char buf[BUFFSIZE];

while ((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0)

if (write(STDOUT_FILENO, buf, n) != n)

err_sys("write error\n");

if (n < 0)

err_sys("read error\n");

return 0;

}

函数open、read、write、lseek、close等提供了不用缓冲的I/O。这些函数都是使用文件描述符。文件描述符是一个非负整数,内核用它来标识进程正在访问的文件。

两个常量STDIN_FILENO和STDOUT_FILENO在<unistd.h>头文件中定义,它们指定了标准输入与标准输出的文件描述符。它们的典型值分别为0和1.

若以下面方式运行命令:

./a.out < infile > outfile

那么名为infile的文件的内容会复制到名为outfile的文件中。

下面程序是以标准I/O的方式实现相同功能:

#include <apue.h>

#include <stdio.h>

int main(int argc, char ** argv)

{

int c;

while ((c = getc(stdin)) != EOF)

if (putc(c, stdout) == EOF)

err_sys("write error\n");

if (ferror(stdin))

err_sys("read error\n");

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: