Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Oбмен даннымы с приложением C/С++ под Unix

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
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 Ответить с цитатой

спасибо большое!
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...