![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
GGoga |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 1.5.2007 Где: Харьков Репутация: нет Всего: нет |
Здравствуйте, люди разбирающиеся в программировании для Linux. Помогите начинающему программисту разобраться в одной проблемке. Как можно программно реализовать задание, где необходимо вызвать системные команды используя execv, dup2. Примером является команда:
tr -d "[0-9]" < a.txt | sort | uniq > b.txt Причем каждый системный вызов должен вызываться отдельно, т.е. execv("tr",{"tr","-d","[0-9]"}), затем execv("sort",{"sort"}) и execv("uniq",{"uniq"}). Но вот только эти три вызова должны работать на один результат, а именно, чтобы программа давала такой же результат, что и такая команда введенная в терминале.И вообще, возможно ли так сделать??? Просто, я не пойму, как можно выполнить взаимодействие между разными процессами вызванными с execv, если они сами по себе не могут быть синхронизированы... А с помощью одной команды execv делать нельзя по условию... Люди, подскажите, кто хоть что-нибудь знает. Заранее ОГРОМНОЕ СПАСИБО ![]() |
|||
|
||||
X-3R1 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 28.4.2007 Репутация: нет Всего: 2 |
С одним exec всё работает, а с несколькими ...хех. Вообщем если найдёшь решение отпишись здесь, мне тоже интересно ;)
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
все просто, вот примерный алгоритм
Это сообщение отредактировал(а) MAKCim - 1.5.2007, 15:44 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
GGoga |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 1.5.2007 Где: Харьков Репутация: нет Всего: нет |
Спасибо за примерчик!!! Ща буду разбираться
![]() |
|||
|
||||
GGoga |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 1.5.2007 Где: Харьков Репутация: нет Всего: нет |
Здравствуйте, MAKCim! Спасибо еще раз за Вашу помощь! Так как я начинающий программист и мне еще далеко не все понятно в программировании, у меня к Вам есть пару вопросов. Насколько я понимаю, в Вашем примере MAX_PROCESSES_COUNT, GET_IN_FILE и GET_OUT_FILE - это макроопределения или константы, скажите пожалуйста, чему они должны быть равны. А также, что делает функция parse? И последний вопрос, скажите пожалуйста, как правильно определить массив указателей, в котором будут храниться команды, т.е. елементом этого массива должна быть просто команда или команда с параметрами: const char *cmds[] = {"tr", "-d \"[0-9]\"", "< a.txt", "sort", "uniq", "> b.txt"}; или const char *cmds[] = {"tr -d \"[0-9]\" < a.txt", "sort", "uniq > b.txt"}; или как это должно быть правильно? Заранее ОГРОМНОЕ СПАСИБО и извините за беспокойство! |
||||
|
|||||
MAKCim |
|
||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
получает на вход команду и возвращает NULL, если перенаправления ввода/вывода нет (т. е отсутствуют > и <) иначе возвращает имя файла, куда перенаправляется ввод/вывод GET_IN_FILE - означает поиск < GET_OUT_FILE - означает поиск > функцию эту тебе самому придется написать ![]() константы GET_IN_FILE, GET_OUT_FILE тоже нужно определить самостоятельно
все, что между | т. е например для задачи
Это сообщение отредактировал(а) MAKCim - 6.5.2007, 16:02 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||
|
|||||||
GGoga |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 1.5.2007 Где: Харьков Репутация: нет Всего: нет |
Спасибо за подсказку!
![]() |
|||
|
||||
codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: нет Всего: 39 |
сори за занудство, но мне так goto здесь лишнее можно хотябы так:
не проверял |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |