Общение с подпроцессом через stdin/stdout
От: BulatZiganshin  
Дата: 03.10.11 20:30
Оценка:
мне нужно реализовать сабж, желательно переносимо на linux. т.е. я запускаю подпроцесс, например bzip2, передаю ему данные через его stdin и считываю его stdout. у меня сейчас есть реализация, но пользователи говорят что она глючит. где можно украсть работающую?
Люди, я люблю вас! Будьте бдительны!!!
Re: Общение с подпроцессом через stdin/stdout
От: mpn-2005  
Дата: 04.10.11 07:04
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>мне нужно реализовать сабж, желательно переносимо на linux. т.е. я запускаю подпроцесс, например bzip2, передаю ему данные через его stdin и считываю его stdout. у меня сейчас есть реализация, но пользователи говорят что она глючит. где можно украсть работающую?


Под linux удобно использовать popen.
Аналога под win вроде как нету.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Общение с подпроцессом через stdin/stdout
От: mpn-2005  
Дата: 04.10.11 07:07
Оценка:
BZ>>мне нужно реализовать сабж, желательно переносимо на linux. т.е. я запускаю подпроцесс, например bzip2, передаю ему данные через его stdin и считываю его stdout. у меня сейчас есть реализация, но пользователи говорят что она глючит. где можно украсть работающую?

M2>Под linux удобно использовать popen.

M2>Аналога под win вроде как нету.

Хотя может уже и есть попробуйте http://msdn.microsoft.com/en-us/library/96ayss4b%28v=vs.71%29.aspx
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Общение с подпроцессом через stdin/stdout
От: watch-maker  
Дата: 04.10.11 09:01
Оценка: 14 (1)
Здравствуйте, mpn-2005, Вы писали:

M2>Здравствуйте, BulatZiganshin, Вы писали:


BZ>>мне нужно реализовать сабж, желательно переносимо на linux. т.е. я запускаю подпроцесс, например bzip2, передаю ему данные через его stdin и считываю его stdout. у меня сейчас есть реализация, но пользователи говорят что она глючит. где можно украсть работающую?


Например на winapi так. Использовать только crt, пытаясь сделать переносимо на linux не очень осмысленно — проще просто написать два варианта реализации функции, код будет чище и надёжнее. Ну или взять готовую библиотеку, в которой уже сделали именно это самое.

M2>Под linux удобно использовать popen.

popen не позволяет делать двунаправленный обмен — либо чтение, либо запись. Хотя в некоторых ОС (например в FreeBSD) действительно есть расширения, которые позволяют и читать и писать одновременно через popen, но это именно расширения.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.