编写一个程序,在 linux 平台(ubuntu)上用 c 语言将内容从一个文件复制到另一个文件,或者创建一个在 ubuntu 中复制文件的程序
问问题
2604 次
3 回答
1
我会考虑使用重定向和管道,就像使用 Shell 一样?下面的这个例子来自我写的一个shell,这就是重定向功能。(>>) 这样您就可以执行 file1 >> file2 并将一个文件的内容复制到另一个文件。这
open(file[0], O_RDWR | O_CREAT, 0666); and while ((count = read(0, &c, 1)) > 0)
write(fd, &c, 1)
; //写入文件是重要的部分
void redirect_cmd(char** cmd, char** file) {
int fds[2]; // file descriptors
int count; // used for reading from stdout
int fd; // single file descriptor
char c; // used for writing and reading a character at a time
pid_t pid; // will hold process ID; used with fork()
pipe(fds);
if (fork() == 0) {
fd = open(file[0], O_RDWR | O_CREAT, 0666);
dup2(fds[0], 0);
close(fds[1]);
// Read from stdout
while ((count = read(0, &c, 1)) > 0)
write(fd, &c, 1); //Write to file
exit(0);
//Child1
} else if ((pid = fork()) == 0) {
dup2(fds[1], 1);
//Close STDIN
close(fds[0]);
//Output contents
execvp(cmd[0], cmd);
perror("execvp failed");
//Parent
} else {
waitpid(pid, NULL, 0);
close(fds[0]);
close(fds[1]);
}
}
于 2010-11-01T16:10:18.807 回答
0
总体思路
- 使用fopen打开一个文件
- 使用 fopen 打开第二个文件
- 使用fread从第一个文件中读取
使用fwrite写入第二个文件
如果需要写入格式化数据,可以用scanf代替 fread,用fprintf代替 fwrite。
于 2010-11-01T14:10:59.800 回答
0
您没有指定必须使用哪种编程语言。所以,我假设你正在使用 bash。编写一个使用该cp
命令的脚本,你的任务就解决了。
于 2010-11-01T14:14:39.397 回答