Начался новый предмет, новые лабы.
Задачка примерно такая: Есть *nix-операционная система. В ней написать приложение на C, которое умеет копировать файлы при помощи системных вызовов Open(), Close(), Read(), Write();
В моем случае в качестве операционной системы использую Ubuntu 12.04
Такой вариант реализации: (пути до файлов вводятся стандартными средствами языка си):
#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 patch to first file:");
gets(filename);
printf("Enter patch to save 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;
}
Исходный код в виде файла можно скачать здесь