Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
2 / 2 / 3
Регистрация: 11.07.2012
Сообщений: 228

Файл-менеджер под LINUX

13.04.2013, 23:33. Показов 3285. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброй ночи
Задали написать файл-менеджер под LINUX
Оболочка файл-менеджера уже готова.
Осталось реализовать функции по заданию
Задание:
запуск исполнительных файлов и скриптов (ENTER) с после-дующим возвратом в программу-оболочку;
создание (F7);
копирование (F5);
удаление (F8)
1. Подскажите пожалуйста какой код использовать для запуска команды UNIX?
2. как реализовать дополнительное окно (например копирование: по F5), где я размещу уже информацию куда и что копировать?
Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.04.2013, 23:33
Ответы с готовыми решениями:

C++. linux. файловый менеджер
Приветствую всех постоянных обитателей данного форума и его случайных гостей. Понимаю, что вас задолбали неучи, которые ничего не хотят...

Компиляция Builder'овского проекта под Linux, (и освоение Linux после Builder'a)
Есть не очень маленький проект, написанный в винде на Builder'e. 1) Сложно ли его будет отредактировать что бы откомпилировать в...

Открыть файл по локальной сети из под Linux
open, fstream не открывают файл. Везде написано что надо путь передать в виде "\\\\ip\\путь к файлу\\файл". Не открывает почему-то....

14
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
13.04.2013, 23:36
API системы
0
 Аватар для abit
870 / 529 / 149
Регистрация: 03.02.2013
Сообщений: 1,858
13.04.2013, 23:40
miragex,

1. Подскажите пожалуйста какой код использовать для запуска команды UNIX?
вам запускать команды, или ответ тоже нужно получать?

запускать можно через обычный system("команда")

как реализовать дополнительное окно (например копирование: по F5), где я размещу уже информацию куда и что копировать?
ммм... а вы на чём
Оболочка файл-менеджера уже готова.
Qt, Gtk или чистый Xlib?
в чём писали оболочку - в том и создавайте окна
1
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
13.04.2013, 23:43
Цитата Сообщение от miragex Посмотреть сообщение
запуск исполнительных файлов
Исполнительные файлы, это какие?
1
 Аватар для AnyOne697
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
14.04.2013, 03:30
Это костыль, но раз система определена, то может так?

Добавлено через 26 секунд
Цитата Сообщение от abit Посмотреть сообщение
запускать можно через обычный system("команда")
Простите, теперь буду читать перед отправкой =(
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
14.04.2013, 09:38
Цитата Сообщение от abit Посмотреть сообщение
вам запускать команды, или ответ тоже нужно получать?
если нужен вывод запускаемой программы/скрипта, то можно использовать popen().
0
2 / 2 / 3
Регистрация: 11.07.2012
Сообщений: 228
14.04.2013, 21:53  [ТС]
Добрый вечер
Цитата Сообщение от abit Посмотреть сообщение
вам запускать команды, или ответ тоже нужно получать?
запускать можно через обычный system("команда")
Я Вас правильно понял, если я допустим хочу выполнить переименование в системе LINUX, то надо написать
system("mv old_name new_name ")?
Спасибо
0
 Аватар для AnyOne697
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
14.04.2013, 22:15
Цитата Сообщение от miragex Посмотреть сообщение
Я Вас правильно понял, если я допустим хочу выполнить переименование в системе LINUX, то надо написать
system("mv old_name new_name ")?
Именно. Можно использовать std::string для удобной конкатенации строк и его метод std::string::c_str() для передачи массива символов в функцию.
0
 Аватар для abit
870 / 529 / 149
Регистрация: 03.02.2013
Сообщений: 1,858
14.04.2013, 22:21
если нужен вывод запускаемой программы/скрипта, то можно использовать popen().
да это так ), вот нашёл пример ввода команды ls и получения ответного вывода в манах убунты:
C
1
2
3
4
5
6
7
8
9
10
11
12
main( )
{
        char *cmd = "ls";
        char buf[BUFSIZ];
        FILE *ptr;
 
        if ((ptr = popen(cmd, "r")) != NULL)
                while (fgets(buf, BUFSIZ, ptr) != NULL)
                        (void) printf("%s", buf);
                (void) pclose(ptr);
        return 0;
}
Я Вас правильно понял, если я допустим хочу выполнить переименование в системе LINUX, то надо написать
для перемеимнования файлов всё же есть готовые операции - http://linux.die.net/man/3/rename от которой даже можно получить код ошибки если что не так и выдать пользователю причину ошибки
было бы моветоном пихать эту команду в консоль через system

и вообще у system есть набор недостатков, например - полная передача управления на время выполнения команды неизвестно чему (это неизвестно что в случае чего и вашу программу грохнет), я бы предложил вам разобраться в группе команд exec - http://linux.die.net/man/3/exec
они более гибкие и аргументы передаются напрямую в вызываемую программу
1
 Аватар для AnyOne697
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
14.04.2013, 22:33
Цитата Сообщение от abit Посмотреть сообщение
было бы моветоном пихать эту команду в консоль через system
Да, на самом деле это так.

Не по теме:

Впрочем, вообще не особо понимаю, зачем нужен файловый менеджер. find, ls, grep, sed: bash - всё что нужно для удобного и эффективного управления не только файлами, но и системой в целом. mc пользуюсь очень редко, в основном, когда нужен довольно долгий super user доступ, при этом планируется небольшое редактирование с микроскопом или, частое копирование довольно объёмных файлов (чтобы не сидеть в догадках, как долго). Впрочем, уверен есть свои аналоги mv и cp с "обратной связью".



Добавлено через 58 секунд

Не по теме:

тем более, что дух unix'а заведует небольшие утилиты, выполняющие обязаности на отлично

0
2 / 2 / 3
Регистрация: 11.07.2012
Сообщений: 228
14.04.2013, 23:39  [ТС]
Как же все-таки реализовать в программе вызов "табличек", вызываемым по функциональным клавишам (F1? F2 и т.д.) как в командере MC


Спасибо
0
 Аватар для abit
870 / 529 / 149
Регистрация: 03.02.2013
Сообщений: 1,858
15.04.2013, 02:25
Как же все-таки реализовать в программе вызов "табличек", вызываемым по функциональным клавишам (F1? F2 и т.д.) как в командере MC
Вы в чём оболочку писали? в Qt? Gtk? там везде готовые средства работы с окнами...

Или Вы оболочку что ли не в GUI делаете?
тогда вообще мало понятно что вы там наделали... как ловите например кнопки вверх/вниз? события мыши?

в общем по существу такие окошки в MC впрочем как и весь остальной ввод/вывод делается через библиотеку ncurses, придётся вам с ней знакомиться, чтобы рисовать такие окошки... хотя и там придётся их так же ручками рисовать, но хотя бы будет возможность... либо основательно изучать теорию так называемого неканонического ввода/вывода в терминал

хорошо это решено во free pascal модулем CRT и фреймворком Free Vision
а вот в с/с++ это уныло... очень уныло
0
deleted
177 / 50 / 5
Регистрация: 29.03.2013
Сообщений: 365
15.04.2013, 11:53
Цитата Сообщение от abit Посмотреть сообщение
и вообще у system есть набор недостатков, например - полная передача управления на время выполнения команды неизвестно чему
приведённый вами пример также не лишён этого недостатка
Цитата Сообщение от abit Посмотреть сообщение
main( )
{
* * * * char *cmd = "ls";
* * * * char buf[BUFSIZ];
* * * * FILE *ptr;
if ((ptr = popen(cmd, "r")) != NULL)
* * * * * * * * while (fgets(buf, BUFSIZ, ptr) != NULL)
* * * * * * * * * * * * (void) printf("%s", buf);
* * * * * * * * (void) pclose(ptr);
* * * * return 0;
}
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
15.04.2013, 14:38
Цитата Сообщение от _1_ Посмотреть сообщение
приведённый вами пример также не лишён этого недостатка
на самом деле это еще один вариант костыля.
Все делается через opendir, readdir и т.д.
0
15.04.2013, 17:03

Не по теме:


приведённый вами пример также не лишён этого недостатка
этот пример я взял из форумов убунты, сам им не пользовался и не советовал, пост о другом

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.04.2013, 17:03
Помогаю со студенческими работами здесь

QFile.open() под Linux работает, под windows нет
QDateTime dt = QDateTime::currentDateTime(); logfilepath = "log_" + dt.toString() + ".txt"; logfilepath.replace(' ','_'); ...

Можно ли под Windows поставить какой - то комплект Qt, чтоб параллельно компилить под Win и Linux?
Ну как бЭ вопрос в шапке :) Тоесть не имея на компе Linux, компилировать под виндой два выходных файла, под Windows и под Linux ?

Есть задача для Искусственного Разума сделать GUI Менеджер Задач на Qt3 Linux
Есть задача для Искусственного Разума сделать GUI Менеджер Задач на Qt3 Linux Вообще изначально планируется Универсальная Экспертная...

[Mono] Подскажите ide c# под linux чтобы компилировался файл для linux
Подскажите ide c# под linux чтобы компилировался файл для linux не как в monodevelop

Не читается WAVE файл под Linux
Доброго времени суток. Для проекта по программирования, который я выполняю в школе, требуется работа с WAV файлами. Ну я немного...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru