Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Mambo Гость
|
Добавлено: Сб Июл 26 2003 02:28 Заголовок сообщения: Oбмен даннымы с приложением C/С++ под Unix |
|
|
Уважаемые Unix/C/С++ гуру, пожалуйста, помогите.
условие: есть програмуля в виде исполняемого фаила, которая получает данные из стандартного ввода и выдает результаты туда же. Простейший пример (на С) - сумма предидущего и введенного значений.
//------add.c------------------------ #include main () { int i, x; while (1) { scanf("%d", &x); printf("%d\n", x+i); fflush(stdout); i = x; } } //------------------------------------
задача: нужно подстыковать это консолжное приложение к другому, так что бы оно (другоe приложение) по очереди скармливало программе add.с данные и СРАЗУ ЖЕ выводилo полученный результат? (то есть другие проложение управляет вводом-выводом процесса add.c)
заранее большое спасибо! |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Сб Июл 26 2003 14:52 Заголовок сообщения: Re: Oбмен даннымы с приложением C/С++ под Unix |
|
|
Во-первых в таком виде add зациклится и родительский процесс на нём умрёт. Во-вторых, даже если написать не while(1), а while( sscanf(...)!=EOF), то проге add можно будет скармливать только массивы (напр. файл с нужными числами), при следующем вызове add (для другого, массива) старое число будет забыто. Если ты хочешь чтобы add его не забыл, то придётся делать отдельный процесс и... А кстати, какая операционка ? Не проще-ли add сделать в виде подпрограммы ? И ещё, в-третьих, не забывайте инициализировать переменные ! (int i=что-то) иначе будет i=мусор. |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Сб Июл 26 2003 15:03 Заголовок сообщения: Re: Oбмен даннымы с приложением C/С++ под Unix |
|
|
Пардон, незаметил слово "UNIX" Значит так. В скрипте можно организовать ещё потоки помимо стандартных (как не знаю) и запустить: add lt 3 & (lt знак меньше, который форум-машина игнорирует), пусть 3 - номер потока. А ещё лучше сделать пайп. В этом случае действительно нужно писать while(1), а stdin настроить так (если он уже не настроен) чтобы процесс вызвавший scanf блокировался пока stdin пуст. А потом в родительском процессе шмулять что-то типа echo "10" > 3 Если что-то упустил - прошу строго не судить |
|
Вернуться к началу |
|
|
Mambo Гость
|
Добавлено: Сб Июл 26 2003 15:10 Заголовок сообщения: Re: Oбмен даннымы с приложением C/С++ под Unix |
|
|
спасибо большое! |
|
Вернуться к началу |
|
|
|