Unix系统调用复制文件夹中所有具有相同扩展名的文件
Unix system calls to copy all files with the same extension in a folder
我对编程很陌生,想 post question/problem 我一直在努力解决:
我需要使用 unix 系统调用用 c 编写一个程序,以便将所有具有相同扩展名的文件复制到一个文件夹中。
我尝试了很多程序,但 none 似乎可以胜任。你能给我一个解决方案吗?它和我 运行 没地方看。
我试过:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
void usage(char *name)
{
printf("Usage: %s <source> <destination>\n", name);
}
int main(int argc, char *argv[])
{
int fd1, fd2;
int n;
char c;
/*** command line args */
if(argc!=3)
{
usage(argv[0]);
exit(1);
}
/*** open the files */
if((fd1=open(argv[1], O_RDONLY))<0)
{
printf("Error opening input file\n");
exit(2);
}
if((fd2=open(argv[2], O_WRONLY | O_CREAT | O_EXCL, S_IRWXU)) < 0)
{
printf("Error creating destination file\n");
exit(3);
}
/*** copy */
while((n = read(fd1, &c, sizeof(char))) > 0)
{
if(write(fd2, &c, n) < 0)
{
printf("Error writing to file\n");
exit(4);
}
}
if(n < 0)
{
printf("Error reading from file\n");
exit(5);
}
/*** closing the files */
close(fd1);
close(fd2);
return 0;
}
但没有成功 returns:
"Error creating destination file"
请帮忙!
我想我找到了一个更简单的方法:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char command[50];
strcpy(command, "cp -v *.txt ~/folder/folder1");
system(command);
return 0;
}
它完成了工作。你看到这里有什么不对吗?
我对编程很陌生,想 post question/problem 我一直在努力解决:
我需要使用 unix 系统调用用 c 编写一个程序,以便将所有具有相同扩展名的文件复制到一个文件夹中。
我尝试了很多程序,但 none 似乎可以胜任。你能给我一个解决方案吗?它和我 运行 没地方看。
我试过:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
void usage(char *name)
{
printf("Usage: %s <source> <destination>\n", name);
}
int main(int argc, char *argv[])
{
int fd1, fd2;
int n;
char c;
/*** command line args */
if(argc!=3)
{
usage(argv[0]);
exit(1);
}
/*** open the files */
if((fd1=open(argv[1], O_RDONLY))<0)
{
printf("Error opening input file\n");
exit(2);
}
if((fd2=open(argv[2], O_WRONLY | O_CREAT | O_EXCL, S_IRWXU)) < 0)
{
printf("Error creating destination file\n");
exit(3);
}
/*** copy */
while((n = read(fd1, &c, sizeof(char))) > 0)
{
if(write(fd2, &c, n) < 0)
{
printf("Error writing to file\n");
exit(4);
}
}
if(n < 0)
{
printf("Error reading from file\n");
exit(5);
}
/*** closing the files */
close(fd1);
close(fd2);
return 0;
}
但没有成功 returns:
"Error creating destination file"
请帮忙!
我想我找到了一个更简单的方法:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char command[50];
strcpy(command, "cp -v *.txt ~/folder/folder1");
system(command);
return 0;
}
它完成了工作。你看到这里有什么不对吗?