使用Linux环境标准输入输出,将文件数据拷贝到终端上,即可实现cat命令
#include "io.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
int fd_in = STDIN_FILENO;
int fd_out = STDOUT_FILENO;
int i;
for(i=1;i<argc;i++)
{
fd_in = open(argv[i], O_RDONLY);
if(fd_in<0)
{
perror("open error");
continue;
}
copy(fd_in, fd_out);
close(fd_in);
}
if (argc == 1)
{
copy(fd_in, fd_out);
close(fd_in);
}
return 0;
}
copy.c函数
#include "io.h"
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
# define BUFFER_LEN 4096
void copy(int fdin, int fdout)
{
char buffer[BUFFER_LEN];
ssize_t size;
while(size = read(fdin, buffer, BUFFER_LEN))
{
//printf("read size: %ld\n", size);
//printf("current: %ld\n", lseek(fdin, 0L, SEEK_CUR));
if(write(fdout, buffer, size)!=size)
{
fprintf(stderr, "write error:%s \n", strerror(errno));
exit(1);
}
}
if(size<0)
{
fprintf(stderr, "read error: %s\n", strerror(errno));
exit(1);
}
}