Перенаправление потоков Stdin / Stdout в приложение

Модератор: Модераторы разделов

Аватара пользователя
minoru-kun
Сообщения: 621
ОС: Debian GNU/Linux

Перенаправление потоков Stdin / Stdout в приложение

Сообщение minoru-kun »

Требуется: написать программу (на C) запускающую другую консольную программу, и обрабатывающую данные из ее stdin/stdout. (Помнится, Apache этим грешил, когда пускал cgi-bin сценарии).
Как это возможно реализовать? :(
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10

Re: Перенаправление потоков Stdin / Stdout в приложение

Сообщение BlackStar »

man popen
LightLang Team
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Перенаправление потоков Stdin / Stdout в приложение

Сообщение Uncle_Theodore »

minoru-kun писал(а):
15.05.2007 18:40
Требуется: написать программу (на C) запускающую другую консольную программу, и обрабатывающую данные из ее stdin/stdout. (Помнится, Apache этим грешил, когда пускал cgi-bin сценарии).
Как это возможно реализовать? :(

man popen спасет отца русской демократии? :)
Спасибо сказали:
Аватара пользователя
Red User
Сообщения: 229
ОС: Debian

Re: Перенаправление потоков Stdin / Stdout в приложение

Сообщение Red User »

Если нужны и stdin, и stdout одновременно, можно сделать как здесь в примере 24
А ведь когда-то не боялись мы программы любой,
И с одним лишь debug'ом выходили на бой,
И искусно написанный вирус встречали как брата
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Перенаправление потоков Stdin / Stdout в приложение

Сообщение Zeus »

Red User писал(а):
15.05.2007 18:55
Если нужны и stdin, и stdout одновременно, можно сделать как здесь в примере 24

А без fork'а это никак не сделать?
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Перенаправление потоков Stdin / Stdout в приложение

Сообщение Uncle_Theodore »

Zeus писал(а):
08.08.2007 17:46
Red User писал(а):
15.05.2007 18:55
Если нужны и stdin, и stdout одновременно, можно сделать как здесь в примере 24

А без fork'а это никак не сделать?

В условиях задачи был процесс, запускающий другой процесс и получающий из него данные...
Ну, в принципе, можно сделать через exec(), тот же форк, но вид сбоку. :)
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Перенаправление потоков Stdin / Stdout в приложение

Сообщение Zeus »

Uncle_Theodore писал(а):
08.08.2007 19:03
Zeus писал(а):
08.08.2007 17:46
Red User писал(а):
15.05.2007 18:55
Если нужны и stdin, и stdout одновременно, можно сделать как здесь в примере 24

А без fork'а это никак не сделать?

В условиях задачи был процесс, запускающий другой процесс и получающий из него данные...

Не, мне надо и передать программе данные и забрать.
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Перенаправление потоков Stdin / Stdout в приложение

Сообщение v04bvs »

man pipe
man fork
man dup2
man exec

а лучше книжки по юниксу почитать.
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Перенаправление потоков Stdin / Stdout в приложение

Сообщение Zeus »

v04bvs писал(а):
08.08.2007 21:07
man pipe
man fork
man dup2
man exec

Это всё понятно.
Я про popen спрашивал - с ним красивше как-то.
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Перенаправление потоков Stdin / Stdout в приложение

Сообщение Uncle_Theodore »

DESCRIPTION
The popen() function opens a process by creating a pipe, forking, and
invoking the shell.

Говорю же, вид сбоку...
Спасибо сказали: