Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 18.10.2015
Сообщений: 11

Копирование файлов в Ubuntu из одной директории в другую

29.03.2016, 20:00. Показов 3565. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется написать программу на языке С,реализующую копирование файлов из одной директории в другую с использованием системного вызова fork(),причем использовать можно n процессов таким образом,чтобы нагрузка делилась равномерно между ними всеми(по размерам файлов,например). Не подскажите,как в Ubuntu провернуть такую вещь?Нам говорили мельком о Git,так подозреваю,следует установить Git,создать коммит,туда поместить файл на чистом C,и он может брать файлы из одного каталога и кидать в другой..Поместить туда файл не проблема. Только как на C реализовать программу копирования,описывая функции,идентичные по действию процедурам в Ubuntu?))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.03.2016, 20:00
Ответы с готовыми решениями:

Копирование файлов из одной директории в другую
Всех приветствую Проблема такая, нужно скопировать файл из одной директории в другую, подскажите, как это можно сделать, совсем ничего...

Копирование всех файлов из одной директории в другую
Подскажите как правильнее написать скрипт который будет копировать файлы из одной директории в другую.

Копирование файла из одной директории в другую
Здравствуйте у меня возникла проблема не могу скопировать файл из одной директории в другую var Injection: TInjection; PathFile:...

4
Заблокирован
29.03.2016, 20:50
Ну, для того, чтобы копировать файлы Git не нужен. Для такой задачи могут понадобиться следующие функции: opendir, readdir, open, read, write, close, closedir. Еще тебе могу понравится ftw, nftw. Так как, похоже, здесь все только начинается, напиши пока рекурсивный обход дерева и копирования в один процесс.
0
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
29.03.2016, 22:34
FrizzyBoy, перед тем как давать такое задание вам должны были достаточно подробно преподать язык Си, иерархию процессов Юникс, работу с файловой системой. Проштудируйте лекции. Или, если ваша специальность с этим не связана - найдите или закажите готовую программу.
То, что вы здесь написали - это поток бреда, показывающий полное непонимание употребляемых терминов.
0
0 / 0 / 1
Регистрация: 18.10.2015
Сообщений: 11
29.03.2016, 22:50  [ТС]
В том и дело,уважаемый,что иерархию процессов нам не преподавали абсолютно,а язык Си-лишь в весьма "общих" чертах,дальше мы работали с С++ и обработку файлов фактически пропустили мимо своих глаз.
А что именно вам не понравилось в терминах?Мне необходима реализация на С Unix-совместимых функций типа mkdir,opendir и т.д,связанная воедино общей идеей копирования файлов из одного каталога в другой. По-моему,здесь нет неясностей)Просто писал второпях,мог наделать ошибок,не осуждайте строго
0
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
30.03.2016, 10:31
Цитата Сообщение от FrizzyBoy Посмотреть сообщение
А что именно вам не понравилось в терминах?
Во-первых, какое отношение к вопросу имеет git?
Во-вторых, вы ошиблись разделом форума.
В-третьих, я с трудом понял, что такое
Цитата Сообщение от FrizzyBoy Посмотреть сообщение
функции,идентичные по действию процедурам в Ubuntu?
Ниже наспех набросал код на Си. Проверил 1 раз. Возможны ошибки и неточногсти. Для копирования каждого файла создается отдельный процесс. Копируется файл целиком. Для огромных файлом (сравнимых или больше RAM) могут быть проблемы.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
 
int main(int argc, char* argv[])
{
  if (argc != 3) {
    printf ("%s <source_dir> <target_dir>\n", argv[0]);
    return 0;
  }
  char file_in[256], file_out[256];
  DIR *d = opendir(argv[1]);
  mkdir (argv[2], 0775);
 
  struct dirent *fl;
  while(fl= readdir (d))
  {
    if (fork()) continue;
    sprintf(file_in, "%s/%s", argv[1], fl->d_name);
    sprintf(file_out, "%s/%s", argv[2], fl->d_name);
 
    struct stat st;
    stat(file_in, &st);
    if (!S_ISREG(st.st_mode)) return 0;
    int fd_in= open (file_in, O_RDONLY);
    int fd_out= creat (file_out, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
    if (fd_in == -1 || fd_out == -1) return 1;
 
    char *buf= malloc (st.st_size);
    if ( read (fd_in, buf, st.st_size) != st.st_size || write (fd_out, buf, st.st_size) != st.st_size) return 1;
 
    free (buf); close (fd_in); close (fd_out);
    return 0;
  }
  while (wait(0)>0) ;
  closedir(d);
  return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.03.2016, 10:31
Помогаю со студенческими работами здесь

Копирование заданных в списке папок со всем содержимым из одной директории в другую
Прошу помощи. Я ни разу не программист, не моё это, уж простите. Кое что понимаю на уровне обезьяны, но не более. Задача -...

Перемещение файлов из одной директории в другую
Нужно сделать перемещение файлов из одной директории в другую. Путь в котором файлы...

Копирование файлов из одной папки в другую, но с пропуском одинаковых файлов в этих папках
Доброго времени суток. Прошу помощи в написании батника. Задача: Есть папка А с файлами 1,2,3 и папка Б с этими же файлами 1,2 и 3. ...

Копирование файлов из одной папки в другую
Добрый день! Нашел на форуме хорошую функцию копирования файлов из одной папки в другую. Но там жестко прописан путь откуда и куда...

Копирование файлов из одной папки в другую
Нужно скопировать все файлы из папки С:/zello в папку С:/zello2 Программу с самого начала до конца Заранее спасибо!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru