文件操作-一个可以直接复制文件数据的小程序

部分名词解释:

文件描述符:

文件描述符(file descriptor) 通常是一个小的非负整数,内核用以标识一个特定进程正在访问的文件,当内核打开一个现有文件或创建一个新文件时,它都返回一个文件描述符。

在读、写文件时,可以使用这个文件描述符;

root@aiyq195:/home/aiyq195/lx/unixc/1# cat file.c
#include "apue.h"

#define BUFFSIZE 4096

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

while( (n = read(STDIN_FILENO,buf,BUFFSIZE) ) >0 )
{
if( write(STDOUT_FILENO,buf,n) != n )
perror("write error"),exit(-1);
}
if( n<0 )
{
perror("read error"),exit(-1);
}
exit(0);
}
root@aiyq195:/home/aiyq195/lx/unixc/1# ls
error.c fi file.c myls myls.c

编译一下程序:
root@aiyq195:/home/aiyq195/lx/unixc/1# gcc file.c -o fi
root@aiyq195:/home/aiyq195/lx/unixc/1# ./fi > fi.txt
nihao
aiyq195
i m aiyq195

然后使用 ls 命令查看下,会发现当前路径下多了一个文件 fi.txt
root@aiyq195:/home/aiyq195/lx/unixc/1# ls
error.c fi file.c fi.txt myls myls.c

查看文件内的数据
root@aiyq195:/home/aiyq195/lx/unixc/1# cat fi.txt
nihao
aiyq195
i m aiyq195

试着将文件内的数据拷贝到其他的文件中
root@aiyq195:/home/aiyq195/lx/unixc/1# ./fi < fi.txt > fi1.txt
root@aiyq195:/home/aiyq195/lx/unixc/1# ls
error.c fi fi1.txt file.c fi.txt myls myls.c
root@aiyq195:/home/aiyq195/lx/unixc/1# cat fi1.txt
nihao
aiyq195
i m aiyq195