| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Программирование для Linux |
| Автор: GGoga 1.5.2007, 11:56 |
| Здравствуйте, люди разбирающиеся в программировании для 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 1.5.2007, 14:33 |
| С одним exec всё работает, а с несколькими ...хех. Вообщем если найдёшь решение отпишись здесь, мне тоже интересно ;) |
| Автор: MAKCim 1.5.2007, 15:43 | ||
все просто, вот примерный алгоритм
|
| Автор: GGoga 2.5.2007, 14:50 |
| Спасибо за примерчик!!! Ща буду разбираться |
| Автор: GGoga 6.5.2007, 14:42 | ||||
Здравствуйте, 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"}; или как это должно быть правильно? Заранее ОГРОМНОЕ СПАСИБО и извините за беспокойство! |
| Автор: GGoga 6.5.2007, 20:08 |
| Спасибо за подсказку! |
| Автор: codelord 26.7.2007, 14:10 | ||
сори за занудство, но мне так goto здесь лишнее можно хотябы так:
не проверял |