LINUX.ORG.RU

Копирование файла в Linux через процедуру

 , ,


0

2

Мне нужно написать программу, которая копирует содержимое одного файла в другой. При этом надо написать программу и запустить ее через gcc компилятор. И еще надо использовать сист. вызовы creat(),open(),read(),write() и close(). Мои мысли: сначала открыть файл в программе, который мы компилируем и как-то сохраняем в массив char его содержимое. Затем открываем другой файл, только уже на запись. В этот файл с помощью write() записываем этот массив char. Но вот как прочитать содержимое исходного файла в какую-то переменную? Можно ли как-то? Я пробовал через execle делать, но это сист. вызов просто распечатывает содержимое моего файла и возвращает целое число. Execle(«/bin/cat»,«/bin/cat»,«1.c»,NULL,envp). Но это просто печатает содержимое файла. А мне надо как-то это сохранить и записать в другой файл. Подскажите как можно реализовать. Может быть я вообще не то делаю.

Но вот как прочитать содержимое исходного файла в какую-то переменную?

rewind(file); fgets(buf, bufsize, file);

Затем открываем другой файл, только уже на запись.

Сразу открываешь два файла: один - на чтение, другой - на запись. И по-блочно (через буфер) копируешь один во второй.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 2)
Ответ на: комментарий от vel

У cp прогресс-бара нет. Лучше вместо cp взять pv.

i-rinat ★★★★★
()

Но вот как прочитать содержимое исходного файла в какую-то переменную?

С помощью read(). Ты же строчкой выше писал:

В этот файл с помощью write() записываем этот массив char.

Вот так же, как массив записываешь в файл через write(), читаешь его через read().

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous

Ну зачем сразу с козырей ходить ?

vel ★★★★★
()
Ответ на: комментарий от anonymous

open(A)
fstat(A)
mmap(A)
open(B)
write(B)

Ну я бы поостерегся так делать. А вдруг у него 32 битная среда и файл в террабайт?

Кстати, как в 64 битной системе все это переживет? Насколько я помню, в Линуксе mmap на файл не ограничивается overcommit, но не поплохеет ли системе если попробовать замапать многотеррабайтный файл.

anonymous
()
Ответ на: комментарий от WitcherGeralt

Почему тупняк? Обычные нубовопросы.
А если посмотреть, какую дичь советуют некоторые отвечающие - этот тупняк вполне в тренде лора.

Deleted
()
Ответ на: комментарий от Deleted

Потому что гуглится с первой попытки первым же номером в выдаче.

WitcherGeralt ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.