作者:幽雅闲居xl | 来源:互联网 | 2023-10-10 20:22
将标准输入复制到标准输出:#include<apue.h>#include<unistd.h>#defineBUFFSIZE4096intmain(intargc
将标准输入复制到标准输出:
#include
#include
#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在头文件中定义,它们指定了标准输入与标准输出的文件描述符。它们的典型值分别为0和1.
若以下面方式运行命令:
./a.out outfile
那么名为infile的文件的内容会复制到名为outfile的文件中。
下面程序是以标准I/O的方式实现相同功能:
#include
#include
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;
}