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; 
}

它完成了工作。你看到这里有什么不对吗?