您的位置:首页 > 运维架构 > Linux

linux cp命令源码

2013-12-17 10:07 751 查看
本文转载自 http://www.csc.villanova.edu/~mdamian/C/stdc-file-copy.c

/*
* stdc-file-copy.c - copy one file to a new location, possibly under a
* different name.
*/

#include <stdio.h>              /* standard input/output routines.    */

#define MAX_LINE_LEN 1000	/* maximal line length supported.     */

/*
* function: main. copy the given source file to the given target file.
* input:    path to source file and path to target file.
* output:   target file is being created with identical contents to
*           source file.
*/
void
main(int argc, char* argv[])
{
char* file_path_from;	/* path to source file.   */
char* file_path_to;		/* path to target file.   */
FILE* f_from;		/* stream of source file. */
FILE* f_to;			/* stream of target file. */
char buf[MAX_LINE_LEN+1];   /* input buffer.          */

/* read command line arguments */
if (argc != 3 || !argv[1] || !argv[2]) {
fprintf(stderr, "Usage: %s <source file path> <target file path>\n",
argv[0]);
exit(1);
}
file_path_from = argv[1];
file_path_to = argv[2];

/* open the source and the target files. */
f_from = fopen(file_path_from, "r");
if (!f_from) {
fprintf(stderr, "Cannot open source file: ");
perror("");
exit(1);
}
f_to = fopen(file_path_to, "w+");
if (!f_to) {
fprintf(stderr, "Cannot open target file: ");
perror("");
exit(1);
}

/* copy source file to target file, line by line. */
while (fgets(buf, MAX_LINE_LEN+1, f_from)) {
if (fputs(buf, f_to) == EOF) {  /* error writing data */
fprintf(stderr, "Error writing to target file: ");
perror("");
exit(1);
}
}
if (!feof(f_from)) { /* fgets failed _not_ due to encountering EOF */
fprintf(stderr, "Error reading from source file: ");
perror("");
exit(1);
}

/* close source and target file streams. */
if (fclose(f_from) == EOF) {
fprintf(stderr, "Error when closing source file: ");
perror("");
}
if (fclose(f_to) == EOF) {
fprintf(stderr, "Error when closing target file: ");
perror("");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux cp 源代码