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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.