Тема: имена файлов в командной строке

Как сделать, чтобы имена файлов задавались в командной строке (первый аргумент - исходный файл, второй - результирующий) ? и если аргументы командной строки отсутствуют, использовать стандартный ввод и стандартный вывод.

#include <stdio.h>
#include <fcntl.h>
#define BUFFER_SIZE 8096
int main ()
{
  char filename [1000],
       destname [1000],
       buffer[BUFFER_SIZE];
  int fd_in = 0,
      fd_out = 0;
  ssize_t ret_in,
          ret_out;
  printf("Enter name first file:");
  gets(filename);
  printf("Enter name copy of first file:");
  gets(destname);
  fd_in = open(filename, O_RDONLY);
  if (fd_in == -1)
    printf("error with open source file");
  fd_out = open(destname,O_WRONLY | O_CREAT, 0644);
  if (fd_out == -1)
    printf("error with open dest. file");
  while ((ret_in = read(fd_in, &buffer, BUFFER_SIZE)) > 0)
  {
    ret_out = write(fd_out,  &buffer, (ssize_t) ret_in);
    if (ret_out != ret_in)
      printf("Error with write to dest.");
  }
  close(fd_in);
  close(fd_out);
  return 0;
}

2

Re: имена файлов в командной строке

А зачем вы создали "cp" команды урезанную версию?

foreach my $arg (@ARGV) {
    print $arg, "\n";
}