Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2013, 15:26   #1
aybek
Новичок
Джуниор
 
Регистрация: 03.12.2013
Сообщений: 2
По умолчанию Управление дочерними процессами

Добрый вечер.
Встала такая задача - требуется запустить дочерний процесс, перенаправив на стандарнтный ввод которой некий буфер памяти. ОС: LINUX, есть ли для реализации этой цели некие api. и т. д.
Конкретно задача такова, имеется испольняемый файл допустим a.out. В программе
происходит что-то вроде этого

Код:
char * buf = malloc(0x1000);
int pid = fork();
if (pid == 0) {
  system("a.out"); здесь требуется перенаправить на ввод программы некий буфер  
  памяти допустим buf
}
else {
  род процесс...
}

Так же требуется стандартный вывод программы перенаправить на какой-то буфер.
как можно это осуществить?
Конечно, можно буфер предварительно записать в файл, а потом перенаправить этот файл на ввод, но это медленно, количество таких процессов может быть очень велико.
aybek вне форума Ответить с цитированием
Старый 03.12.2013, 16:12   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Создаете pipe
Используя dup2() меняете stdin файл на тот самый pipe
Выполняете exec() для запуска процесс (а не system)

Ref: http://stackoverflow.com/questions/1...-in-c-not-work
waleri вне форума Ответить с цитированием
Старый 03.12.2013, 16:16   #3
aybek
Новичок
Джуниор
 
Регистрация: 03.12.2013
Сообщений: 2
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Создаете pipe
Используя dup2() меняете stdin файл на тот самый pipe
Выполняете exec() для запуска процесс (а не system)

Ref: http://stackoverflow.com/questions/1...-in-c-not-work
Можно подробнее про pipe? Что это такое? И с чем его едят?

Это не очень подходит, интерфейс ввода-вывода не должен измениться, программа должна думать что она все считывает из стандартного ввода и печатает в стандартный вывод. Тем более эта программа может быть написана на разных языках.

Последний раз редактировалось Stilet; 03.12.2013 в 17:16.
aybek вне форума Ответить с цитированием
Старый 03.12.2013, 17:43   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Вы не знаете, что это такое, но уже решили, что это не подходит?

http://en.wikipedia.org/wiki/Pipeline_(Unix)
Раздел "Creating pipelines programmatically"
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление процессами. Proger_1 Win Api 9 24.12.2012 21:06
Управление процессами -=Andriushka=- Общие вопросы C/C++ 0 31.03.2012 04:47
Управление процессами An123 Помощь студентам 2 18.12.2009 23:14
управление процессами An123 Общие вопросы C/C++ 5 29.11.2009 14:46
Управление дочерними окнами через вкладки phpusr Общие вопросы Delphi 4 21.10.2009 21:04