Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> fork ошибка копирования файла, убрать ошибки при копировании 
:(
    Опции темы
Ytkonos
Дата 1.12.2011, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 15.10.2004
Где: MO

Репутация: нет
Всего: нет



Есть рабочий код. 
Задание:
Составить программу cpr ,  осуществляющую рекурсивное копирование поддерева файловой  системы  OC  UNIX. Программа cpr  должна  вызываться на выполнение в соответствие со следующим синтаксисом:
cpr имя_дир_1 имя_дир_2,
где имя_дир_1 -  имя  директории,  служащее  корнем поддерева файлов, подлежащего копированию; имя_дир_2 - имя директории, в которую должно быть скопировано поддерево. 
Замечание. На  языке оболочки OC UNIX эта задача решается с помощью конвейера из трех команд:
tar cf - ?имя_дир_1? | (cd ?имя_дир_2? ; tar xf -)

Код

­#include <unistd.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>

int main(int argc,char *argv[])
{
    if(access(argv[1], F_OK) || access(argv[2], F_OK))
    {
        fprintf(stderr,"Error access: %s\n", strerror(errno));
        return 1;
        }
    
    int fds[2];
    pipe (fds);
    if(fork())
    { // РєРѕРґ отца
        dup2(fds[1],1);
        close(fds[0]);
        close(fds[1]);
        if(execl("/bin/tar", "tar", "cf", "-", argv[1], NULL) == -1)
            perror("execl tar");
    }
    else
    {
        dup2(fds[0],0);
        close(fds[0]);
        close(fds[1]);
        char buf[1024];
        buf[0] = '\0';
        strcat(buf, "cd ");
        strcat(buf, argv[2]);
        strcat(buf, " ; tar xf -");
        //fprintf(stderr, "Generated string: %s\n", buf);
        if(execl("/bin/sh", "sh", "-c", buf, NULL) == -1)
            perror("execl sh");
    }
    
    return 0;
}



Но при копировании вылезает ошибка, что такой то файл не скопирован, не хватает прав. Нужно сделать, что такая ошибка не вылезала. Какой командой можно так сделать?
PM WWW ICQ   Вверх
bsa
Дата 1.12.2011, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



cp -fR src_dir dst_dir >/dev/null 2>&1
PM   Вверх
feodorv
Дата 4.12.2011, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 1
Всего: 45



Схема с tar'ом устрашает...
Цитата(Ytkonos @  1.12.2011,  11:50 Найти цитируемый пост)
Но при копировании вылезает ошибка, что такой то файл не скопирован, не хватает прав.

А если копировать с правами "root"?


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0854 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.