系统I/O小程序-文件拷贝
使用系统IO函数编写 ./syscopy src des
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>/**
* system i/o
* ./syscopy src des
*/
int main(int argc, char *argv[])
{int des_fd, src_fd;char buf[128];int size;unsigned int count;if (argc < 3) {printf("The argc is wrong!\n");return -1;}src_fd = open(argv[1], O_RDONLY);if (src_fd < 0) {printf("open %s fail.\n", argv[1]);return -1;}des_fd = open(argv[2], O_RDWR|O_CREAT|O_TRUNC);if (des_fd < 0) {printf("open %s fail.\n", argv[2]);close(src_fd);return -1;}while (1) {size = read(src_fd, buf, 128);if (size == -1) {printf("read %s fail.\n", argv[1]);close(src_fd);close(des_fd);return -1;}if (size == 0) {if(errno == EINTR) {continue;}break;}if (write(des_fd, buf, size) != size) {printf("write %s fail.\n", argv[2]);close(src_fd);close(des_fd);return -1;}}count = lseek(src_fd, 0, SEEK_END);printf("src long:%d\n", count);count = lseek(des_fd, 0, SEEK_END);printf("des long:%d\n", count);close(src_fd);close(des_fd);return 0;
}