программирование под Linux
От: MartIra  
Дата: 12.11.12 15:12
Оценка: :))
Добрый вечер! Возникла проблема:
Пишу консольное приложение в qt creator. От пользователя получаю строку:"ls namefolder", или подобную команду. Нужно вызвать функцию, позволяющую выполнить эту команду Linux и вывести результат пользователю. Полазила по интернету, что-то ничего подобного не могу найти.
Пожалуйста, помогите!!

12.11.12 21:53: Перенесено модератором из 'C/C++' — Кодт
Re: программирование под Linux
От: Vamp Россия  
Дата: 12.11.12 15:15
Оценка: :)
MI>Пожалуйста, помогите!!
Начни с изучения команд system и popen.
Да здравствует мыло душистое и веревка пушистая.
Re: программирование под Linux
От: Pzz Россия https://github.com/alexpevzner
Дата: 12.11.12 16:25
Оценка:
Здравствуйте, MartIra, Вы писали:

MI> Пишу консольное приложение в qt creator.


Уже смешно.

MI> От пользователя получаю строку:"ls namefolder", или подобную команду. Нужно вызвать функцию, позволяющую выполнить эту команду Linux и вывести результат пользователю. Полазила по интернету, что-то ничего подобного не могу найти.


man popen
man system
man fork
man exec

MI>Пожалуйста, помогите!!


man "не прогуливать лекции"
Re: программирование под Linux
От: Аноним  
Дата: 16.11.12 02:24
Оценка:
Здравствуйте, MartIra, Вы писали:

MI>Добрый вечер! Возникла проблема:

MI> Пишу консольное приложение в qt creator. От пользователя получаю строку:"ls namefolder", или подобную команду. Нужно вызвать функцию, позволяющую выполнить эту команду Linux и вывести результат пользователю. Полазила по интернету, что-то ничего подобного не могу найти.
MI>Пожалуйста, помогите!!

Программирование под линукс состояит из нескольких слабосвязанных языков и сопуствующих им инструментариев:
1. Ядро и социально близкие к ядру функции — написаны на классическом чистом C.
2. Базовая пользовательская среда, то есть GNU-окружение — на объектно-ориентированном C ( не путать с C++, это именно ООП в C ).
3. Командная оболочка — имеет свой развитый язык и свой подход к программированию. Используется широко и часто, к примеру такая системная функция как запуск сервисов (демонов) реализуется через дикую смесь из классических бинарников и скриптов командной оболочки.
4. Графические тулкиты — отдельный зоопарк языков, библиотек, парадигм и подходов. Начиная от классического C (Xlib), ООП-C (GTK), C++ (Qt,wxWidgets) и т.п.

То есть, программист вынужден работать не с каким-то одним стэком технологий (набором инструментов и практик), а с кучей разных стэков, который связаваны между собой синей изолентой и деревянными гвоздями. В принципе, всемирно популярный Qt претендует на то, чтобы большую часть этих ржавых строительных лесов и гнилых брёвен замаскировать от программиста, но это в принципе невозможно.

К чему это я всё, собственно? А к тому что такие вопросы при программирвонии на линуксе (даже при программировании хэлловорлдов) будут возникать постоянно. И для того чтобы научиться самому(самой) отвечать на эти вопросы, придётся, помимо собственно языков программирования, освоить кучу вещей. Начиная от знания внутреннего устройства ядра Linux, заканчивая заморочками GNU-окружения и знанием стандартных UNIX-комманд. Без этого знания ни увидеть всю картину, ни даже найти документацию по интересующему функционалу не получиться. Будет малопродуктивное гугление и "глупые" вопросы на форумах.


По сабжу:
1. Вы что там, шэлл свой пишете?
2. Через QProcess ( метод для Qt )
3. Через fork/exec ( метод для C, подробности искать в man fork, man exec )
4. Через popen ( метод для C, подробности искать в man )
4. Через system ( метод для C, man )
5. Через семейство функций g_spawn* из glib (подробности искать в документации glib)
6. домашнее здание — список продолжить самомстоятельно
Re[2]: программирование под Linux
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 20.11.12 08:10
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Программирование под линукс состояит из нескольких слабосвязанных языков и сопуствующих им инструментариев:

А>1. Ядро и социально близкие к ядру функции — написаны на классическом чистом C.
А>2. Базовая пользовательская среда, то есть GNU-окружение — на объектно-ориентированном C ( не путать с C++, это именно ООП в C ).

Вообще-то ядро тоже — объектно-ориентированный C. Например, код вида

if (filp->f_op && filp->f_op->flush)
retval = filp->f_op->flush(filp, id);


является стопроцентной реализацией вызова виртуальной функции у объекта согласно его интерфейсу и для этого не нужно рисовать на каких-нибудь Glib.

А>То есть, программист вынужден работать не с каким-то одним стэком технологий (набором инструментов и практик), а с кучей разных стэков, который связаваны между собой синей изолентой и деревянными гвоздями. В принципе, всемирно популярный Qt претендует на то, чтобы большую часть этих ржавых строительных лесов и гнилых брёвен замаскировать от программиста, но это в принципе невозможно.




А>К чему это я всё, собственно? А к тому что такие вопросы при программирвонии на линуксе (даже при программировании хэлловорлдов) будут возникать постоянно. И для того чтобы научиться самому(самой) отвечать на эти вопросы, придётся, помимо собственно языков программирования, освоить кучу вещей. Начиная от знания внутреннего устройства ядра Linux, заканчивая заморочками GNU-окружения и знанием стандартных UNIX-комманд. Без этого знания ни увидеть всю картину, ни даже найти документацию по интересующему функционалу не получиться. Будет малопродуктивное гугление и "глупые" вопросы на форумах.


Это всё-таки перебор.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.