LINUX.ORG.RU

Гы ;). Си Или Си++? Процедуру!!!??? Ты ничего не путаешь?

eXOR ★★★★★
()

В Linux ничего вроде CopyFile нет. В какой-то мере вместо него можно использовать sendfile.

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

Да, действительно, можно использовать sendfile --- хотя она может не сработать для файлов, для которых не сработает mmap. Ну и кроме того, она не очень переносима.

Простейший вариант --- делать read/write блоками.

Более изощренный --- сделать mmap, а потом write. Собственно, sendfile так и работает, только в kernel space, потому оно быстрее. Соответственно этот вариант не сработает для файлов, для которых не работает mmap.

Самый правильный --- сначала пытаться делать mmap или sendfile, если не сработало --- цикл read/write

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

aa5779:

Со всем согласен. Ну разве что немного дополню насчет "mmap". Все файловые системы (не псевдо), насколько я знаю, в Linux работают через page cache и в 2.4 (в 2.6 есть некая заморочка с тем, что sendfile должна делать ФС, а не VFS). Из того что не поддерживает page cache навскидку (мне тут подсказывают примеры): chardev, fifo, socket (зависит от параметров ядра - может поддерживать), symlink, directory, но ниоткуда из перечисленного автор скорее всего и не захочет ничего копировать, вот с pseudofs типа /proc надо быть осторожным.

Murr ★★
()

надо написать свою ф-цию которая будет блоками копировать файл и все, плюс читать его атрибуты и прочее чтобы создать идентичный. те банально read/write

могу порыться у себя найти пример, но уже дома - работы много.

alphex_kaanoken ★★★
()

Какой вопрос, такой и ответ.

Приблизительно:

if(fork()) rc=wait(); else execlp("cp",src,dst,NULL);

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