Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: stdin  (Прочитано 8983 раз)
0 Пользователей и 1 Гость смотрят эту тему.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« : 03-06-2008 08:23 » 

Всем привет. Хочу попытаться реализовать нормальный вывод результатов запроса от sqlplus. Очень часто приходится работать на удаленных серверах по ssh и не всегда есть возможность использовать графику, да и нормальных инструментов GUI для работы с БД Oracle мало или нет вовсе. Поэтому хочу через стандартный ввод вывод парсить результаты селектов от sqlplus. Сейчас читаю из stdin и вот такой вопрос, например прочитал в буфер вот такую строку sqlplus /nolog, мне эту строку обрабатывать не нужно, как мне отдать ее из буфера системе на выполнение?
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #1 : 03-06-2008 09:49 » 

ага, спасибо, в этом помогла функция system(const char* command);
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #2 : 03-06-2008 12:50 » 

а как бы мне завернуть stdout к себе в буфер?
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 03-06-2008 20:12 » 

Что ты считаеш буфером? И почему именно через потоки ты это хочеш сделать. В принципе можно привязать поток к файлу.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 03-06-2008 21:04 » 

McZim, классика жанра:
1. Создается два (или три - для stderr) анонимных pipe/
2. fork().
3. Потом на каждой стороне закрываются "ненужные" дескрипторы.
4. В дочернем потоке закрыть 0, 1 и 2, и сделать dup для труб на эти места. Лишнее закрыть.
5. Потои дочка делает exec() (не system!)
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #5 : 04-06-2008 06:24 » 

Finch, хорошо, если так то не буфер а массив Улыбаюсь Через потоки потому что мне нужно завернуть информацию от программы, которая выдает некий результат в stdout, к себе в массив, произвести некоторые операции и отправить в stdout.

RXL, ок.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #6 : 04-06-2008 19:34 » 

Вот описание iostream библиотеки. В частности, надо наверно обратить внимание на streambuf. Правда я с этим классом не работал.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 04-06-2008 19:36 » 

Finch, где описание?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #8 : 04-06-2008 19:37 » 

Упс. Извиняюсь. http://www.cplusplus.com/reference/iostream/
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #9 : 04-06-2008 20:06 » 

Finch, ну еще не факт что я plus plus задействую Улыбаюсь
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #10 : 05-06-2008 21:01 » 

McZim, Я не понимаю, в чем у тебя проблема возникает. У любого потока данных, должно подрузумеваться методы чтения или/и записи данных из/в поток. Лучше покажи код, как ты иницилизируеш поток данных, чтобы можно было от чего нибудь отталкиваться.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #11 : 06-06-2008 09:23 » 

Finch, уже ни в чем все хорошо Улыбаюсь
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines