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

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

29.03.2016, 20:00. Показов 3527. Ответов 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru