Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
Как в с++ написать запуск консольной программы, что-бы взаимодействовать с ней через потоки ввода вывода? В гугле нашел только сишную функцию "popen". А хотелось бы работать через потоки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 14:38 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
работать должно на линуксе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 14:46 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
как тогда обернуть "FILE*" полученный функцией popen - в стандартный поток ввода с++? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 16:03 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
Как-то так: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 17:14 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
maytonКак-то так: Код: plaintext 1. но, создавать временный файл - не желательно. через стандартные потоки ввода вывода, должны работать запускаемые программы. главная же программа должна работать с ними через кастомные потоки. пока сделал через stregnstream. читаю туда содержимое (FILE *) полученного функцией popen. а потом уже работаю со стримом. но считаю это решение - далеким от идеала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 17:29 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
maytonКак-то так: Код: plaintext 1. Без создания отчёта. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 17:33 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
maytonmaytonКак-то так: Код: plaintext 1. Без создания отчёта. Код: plaintext 1. приемник не должен читать со стандартного потока ввода вывода. для него это кастомный поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 17:36 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
mayton, более того. приемник - родитель процесса передатчика. пока я решение запилил. но жду более лучшего, более идиоматичного решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 17:38 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
убрал стрингстрим. работаю с потоком ввода в си стиле. просто думал, что в с++ должно быть норм решение на базе потоков. под виндой вроде есть, а вот под линухм - си стайл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 17:52 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 18:04 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
maytonТвоя задача называется IPC. Читай отсюдова http://en.wikipedia.org/wiki/Inter-process_communication та это я шарю. но прикол в том, что вызываемое приложение, должно быть обычной консольной утилиткой. з.ы. задачу то решил. но в чисто сишном стиле. думал просто, что есть с++-е подходы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 22:40 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
Что вам мешает создать "консольное приложение" и спокойно использовать какие нибудь сокеты или какой-нить D-Bus. И stder/stdout тоже можно использовать. В совокупности. Я не вижу никаких ограничений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2012, 00:09 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
maytonЧто вам мешает создать "консольное приложение" и спокойно использовать какие нибудь сокеты или какой-нить D-Bus. И stder/stdout тоже можно использовать. В совокупности. Я не вижу никаких ограничений.я не правильно выразился. вызываемая программа должна работать через стандартные потоки вовода-вовода. т.е. она не знает, кто, когда и откуда ее вызывает. в данном случае, вопрос уже перешел от практического к теоретическому. но тема взаимодействия все равно интересна. вот в джаве например, данный функционал есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2012, 00:22 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaN, Я так понимаю что о существовании stdin/stdout для C и cin/cout для С++ ты не знаешь и никогда не слышал? Или тебе нужны какие-то особенные "стандартные потоки ввода вывода"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2012, 00:29 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
Это ты Зик-Ботан? Не узнал тебя в платье, Керенский ты наш. Честно говоря, тема(ы) наскучила(и) ибо "хотелось-бы" - это не постановка. Ты уж определись что тебе надо. А хотелки .. они нарушают течение сабжа и сбивают с толку. А про pipes/stdin/stdout я уже всему форуму надоел хуже горькой редки. И месяца не проходило чтобы не рассказал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2012, 00:29 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
White OwlЯ так понимаю что о существовании stdin/stdout для C и cin/cout для С++ ты не знаешь и никогда не слышал?знаю и слышал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2012, 03:44 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
maytonЭто ты Зик-Ботан? Не узнал тебя в платье, Керенский ты наш. Честно говоря, тема(ы) наскучила(и) ибо "хотелось-бы" - это не постановка. Ты уж определись что тебе надо. А хотелки .. они нарушают течение сабжа и сбивают с толку. А про pipes/stdin/stdout я уже всему форуму надоел хуже горькой редки. И месяца не проходило чтобы не рассказал.неужели мой вопрос настолько не понятен. я для решении своей проблемы(запуск программы, и взаимодействие с ней через ее стандартные потоки ввода вывода) заюзал popen, но это си стайл. есть ли подобный механизм, но для с++-потоков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2012, 03:45 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
ладно, приведу примеры кода. вот джава: Код: java 1. 2. 3. 4. вот си: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. есть ли аналог для с++? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2012, 03:52 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
mayton"хотелось-бы" - это не постановка.не постановка. так, тема поговорить ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2012, 03:53 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNя для решении своей проблемы(запуск программы, и взаимодействие с ней через ее стандартные потоки ввода вывода) заюзал popen, но это си стайл. есть ли подобный механизм, но для с++-потоков? Стандартного - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2012, 05:57 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
можете посмотреть как реализовано в песочнице буста в библиотеке process http://www.highscore.de/boost/process/ ну или в poco library http://pocoproject.org/docs/Poco.Process.html#9431 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2012, 12:17 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
Pipe - это реальный объект файловой системы. И он может существовать отдельно от пишушего и читающего процесса. Соотв. деструкция этого объекта лежит как отдельная задача. В сях чтобы получить доступ к stdin/stdout/stderr ЕМНИП можно использовать обычные файловые функции fopen/open но в кач. дескриптора указать константы (кажется это 0,1,2 соотвествтенно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2012, 14:29 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
да это то понятно все.. у автора был вопросец, как это все красивенько в с++ обернуть.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2012, 14:31 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNладно, приведу примеры кода. вот джава: Код: java 1. 2. 3. 4. есть ли аналог для с++? Вроде так. Код: plaintext 1. 2. 3. Или Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2012, 15:34 |
|
||
|
взаимодействие через стандартные потоки ввода вывода
|
|||
|---|---|---|---|
|
#18+
жук_ботан, popen -- это пайп, это если руками отрывать на самом деле у любой С/С++ программы есть три потока: -- стандартный ввод stdin -- стандартный вывод stdout -- стандартный вывод ошибок stderr при работе программы это -- три файла, которые всегда предварительно открыты и доступны приложению. Если ты организовываешь извне при запуске программы перенаправление ввода-вывода, эти потока автоматом открываются операционной системой как pipes, тебе отдельно ничего делать не надо, и работать с ними надо как с обычными файлами/потоками. Эта идеология вообще говоря из UNIX-а, потом попала в POSIX, но операционки типа Windows это тоже поддерживают. Т.е. это поддерживают практически все операционки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2012, 15:49 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=88&tid=2020616]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 141ms |

| 0 / 0 |
