4个回答
展开全部
/***********************************
实现普通文件(regular file)内容的复制
./a.out file1 file2 linux下gcc编译
cp file1 file2 本程序仅仅实现本功能
************************************/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <error.h>
#include <stdlib.h>
#define BUFFSIZE 4096
int main(int argc, char *argv[])
{
int fds,fdt,n;
struct stat buf;
char buff[BUFFSIZE];
/*判断命令行参数*/
if(argc != 3){
fprintf(stderr,"usage: ... filename filename\n");
exit(1);
}
if(stat(argv[1],&buf) < 0){
perror("stat error");
exit(2);
}
/*判断file1是否存在*/
if(access(argv[1],F_OK) < 0){
fprintf(stderr,"%s isn't existing!\n",argv[1]);
exit(3);
}
/*判断file1是否是普通文件*/
if(S_ISREG(buf.st_mode) == 0){
fprintf(stderr,"%s isn't regular file!\n",argv[1]);
exit(4);
}
/*打开目标文件和源文件*/
if((fds = open(argv[1],O_RDONLY)) < 0){
perror("open source file error");
exit(5);
}
if((fdt = open(argv[2],O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR|S_IXUSR)) < 0){
perror("open target file error");
exit(5);
}
/*读写操作*/
while((n = read(fds,buff,BUFFSIZE)) > 0)
if(write(fdt,buff,n) != n)
perror("write error");
close(fds);
close(fdt);
return 0;
}
实现普通文件(regular file)内容的复制
./a.out file1 file2 linux下gcc编译
cp file1 file2 本程序仅仅实现本功能
************************************/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <error.h>
#include <stdlib.h>
#define BUFFSIZE 4096
int main(int argc, char *argv[])
{
int fds,fdt,n;
struct stat buf;
char buff[BUFFSIZE];
/*判断命令行参数*/
if(argc != 3){
fprintf(stderr,"usage: ... filename filename\n");
exit(1);
}
if(stat(argv[1],&buf) < 0){
perror("stat error");
exit(2);
}
/*判断file1是否存在*/
if(access(argv[1],F_OK) < 0){
fprintf(stderr,"%s isn't existing!\n",argv[1]);
exit(3);
}
/*判断file1是否是普通文件*/
if(S_ISREG(buf.st_mode) == 0){
fprintf(stderr,"%s isn't regular file!\n",argv[1]);
exit(4);
}
/*打开目标文件和源文件*/
if((fds = open(argv[1],O_RDONLY)) < 0){
perror("open source file error");
exit(5);
}
if((fdt = open(argv[2],O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR|S_IXUSR)) < 0){
perror("open target file error");
exit(5);
}
/*读写操作*/
while((n = read(fds,buff,BUFFSIZE)) > 0)
if(write(fdt,buff,n) != n)
perror("write error");
close(fds);
close(fdt);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给思路行吗?具体的程序得花一些时间啊~~ 先说cp命令用法:cp 源路径 目标路径所以用C实现的步骤是: 1、解析命令,就是提取出源路径和目标路径,以及,gysQqc
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
copy?
更多追问追答
追问
给你个程序 帮我改下
追答
可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询