Ниже приведена программа, которая копирует содержимое файла (1-й аргумент) в новый файл (2-й аргумент).
Я тестирую его на Linux, например, копирую содержимоеТерминал пользователя в новый файл также работает:
./copy /dev/tty newFile
Однако копирование содержимого текущего каталога не работает:
./copy . newFile
Последнее не вызывает ошибку при открытии 1-го аргумента, но ничего не копируется.Я думал, что содержимое каталога будет скопировано в новый файл?
РЕДАКТИРОВАТЬ: Это происходит потому, что linux по умолчанию принимает рабочий каталог как ~
.c программой ниже:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
int copy(int inFileDesc,int outFileDesc);
int main (int argc, char** argv)
{
int inputfd;
int outputfd;
if (argc!=3)
{
printf("Wrong number of arguments\n");
exit(1);
}
inputfd=open(argv[1],O_RDONLY);
if(inputfd==-1)
{
printf("Cannot open file\n");
exit(1);
}
outputfd=creat(argv[2],0666);
if(outputfd==-1)
{
printf("Cannot create file\n");
exit(1);
}
copy(inputfd,outputfd);
exit(0);
}
int copy(int inFileDesc,int outFileDesc)
{
int count;
char buffer[BUFSIZ];
while((count=read(inFileDesc,buffer,sizeof(buffer)))>0)
{
write(outFileDesc,buffer,count);
}
}