Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
#1

Консоль. Чисто технический вопрос. - C++

16.09.2011, 22:48. Просмотров 949. Ответов 6
Метки нет (Все метки)

Вопрос такой. Как работать с консолью?..

Нет, первая мысль плохая. Может я плохо выразился. Впрочем - скорее всего. Поясняю.

Есть программа, написанная на C#. Она скачивает из ин-та страничку и сохраняет в файл.
Есть концепция. Реализация на C++ (потому что надо на нём, для самореализации и понимания основ языка). Она должна этот скачанный файл открыть. Проблема - я не хочу перед открытием второй (концептуально) части программы, открывать первую (техническую) часть программы. Но так как приложение консольное, у меня родилась дикая мысль - каким-то раком перенаправить поток ввода C# на поток вывода C++. Это возможно?.. А если возможно, то можно хотя бы линк. Впрочем, не откажусь от разжёвывания и пережёвывания. Проглочу как нибудь сам

В виде псевдо схемы:

0) C# Console App (INPUT) <- C++ App (OUTPUT)
1) C# Console App (outPUT) -> C++ App (inPUT)

Если короче, то каким раком осуществить обмен данными между двумя приложениями.

Впрочем, первый пункт я уже почти решил - вывод в файл. С той лишь проблемой, что файл появляется не сразу. Но здесь поможет, имхо, слип на пять секунд. Если, конечно, такая фича есть. Но кто ищет - тот найдёт. А вот с нулевым пунктом, как я уже говорил проблемы, просьба - помочь.

ЗАРАНЕЕ СПАСИБО!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
16.09.2011, 22:51
  #2
 Комментарий модератора 
Избегайте использования слишком большого количества смайлов в сообщениях в тематических разделах форума, а также "кричащего" выделения текста. Это никаким образом не ускорит решение вашей проблемы.
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
17.09.2011, 18:15  [ТС]     Консоль. Чисто технический вопрос. #3
Я просто выделил самое главное. Чтобы было "красиво", а не простой, пугающий, массив текста. Впрочем, видимо я не прав и решения вообще никак не идут. И вполне возможно их вообще не будет. Впрочем, как раньше сам находил, так и сейчас, надеюсь, сам найду. Но тему создать будет не лишнем, ведь возможно произойдёт чудо и то, что хочется сделать сегодня, а не завтра, будет сделано хотя бы ночью между сегодня и завтра

Но всё равно спасибо! [strike]Возможно я не прав и стоило вообще не оформлять топик.[/strike] Да, тег strike до сих пор не поддерживается. А жаль =(
An1ka
65 / 70 / 2
Регистрация: 30.06.2011
Сообщений: 176
17.09.2011, 18:54     Консоль. Чисто технический вопрос. #4
У двух программ будет разное адресное пространство...
А чем через файл не устраивает ? В обоих случаях так же можно обмен между программами через файл.
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
17.09.2011, 19:14     Консоль. Чисто технический вопрос. #5
AnyOne697, я не знаю, является стандартный поток вывода C# стандартным потоком вывода ОС, но вообще, делайте как в Unix (о боже, я употребил "C#" и "делайте как в Unix" в одном предложении...):

program1 > file.txt // перенаправление вывода program1 в file.txt
program1 < file.txt // перенаправление ввода program1 из file.txt
program1 | program2 // перенаправление вывода program1 на ввод program2

А если так и по кругу:
program1 < file.txt | program2 > file.txt

То program1 будет читать из file.txt, отдавать свой вывод вводу program2, которая свой вывод будет сливать в file.txt. Если повторить по кругу, то получится общение.

Поясню. Есть файл file.txt:
Код
hello, world!
how are you?
my friend hello
jumpjet
i like sault crackers
hello to sault crackers producers
black is white. red is white. black is red.
hello to everyone!
Запускаем такую комманду (в unix):

cat < file.txt | grep 'hello' > file.txt

После выполнения получаем
Код
hello, world!
my friend hello
hello to sault crackers producers
hello to everyone!
То есть cat прочитала file.txt на свой вывод, вывод пошёл на ввод grep, которая вывела все строки, содержащие 'hello' на свой вывод, который пошёл обратно в file.txt

Винда вроде тоже так умеет.

Удачи!
pincet
1223 / 793 / 84
Регистрация: 23.07.2010
Сообщений: 3,988
17.09.2011, 19:30     Консоль. Чисто технический вопрос. #6
я бы named pipes пользовал
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2011, 14:59     Консоль. Чисто технический вопрос.
Еще ссылки по теме:

Определение чисто виртуальных функций в потомках C++
C++ Исключение для чисто виртуальной функции
НЕнаследование чисто виртуальной функции C++
C++ Описание чисто виртуальных методов, Абстрактные классы
C++ Чисто виртуальная функция возвращающая ссылку

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
18.09.2011, 14:59  [ТС]     Консоль. Чисто технический вопрос. #7
Цитата Сообщение от An1ka Посмотреть сообщение
У двух программ будет разное адресное пространство...
А чем через файл не устраивает ? В обоих случаях так же можно обмен между программами через файл.
Спасибо! Теперь я мечтаю как можно скорее пересесть на Unix. Но что-то стопицот триллионов программ, 99.999% которых я запускал один раз в жизни почему-то не отпускают меня...
Был такой вариант. Но вопрос - "Как запустить консольную программу в C++, потом подождать пока программа выполнится, после чего, собственно, прочитать файл." Хотя, такой вариант немного не эстетичен, имхо.

Цитата Сообщение от talis Посмотреть сообщение
Винда вроде тоже так умеет.
Что-то похожее умеет, но не такое. Может перенаправить поток стандартного ввода и вывода в файл. Впрочем, надо попробовать, а потом уже говорить =) Проблема, правда, в том, что чисто практически мне нужно тогда запустить программу в коде. То есть что-то вроде того:
C++
1
2
3
4
5
6
7
8
9
10
#include <всё_что_нужно>
 
using namespace...
 
//***
 
void main(){
    console.launch("PROGRAMM.EXE | stdin");
    doanythingelse();
}
Понятно, что выше немного не то, но нужно это.

Добавлено через 2 минуты
Цитата Сообщение от pincet Посмотреть сообщение
я бы named pipes пользовал
А разве это не тот же самый socket, только на уровне приложений?.. И смысл?.. Впрочем, за идею спасибо, на днях/неделях/месяцах изучу... Хотя, действительно стоит прочитать хотя бы вики. Прочитал - вроде мысли подтвердились... Что-то не айс...

Добавлено через 16 часов 33 минуты
Цитата Сообщение от talis Посмотреть сообщение
Винда вроде тоже так умеет.
Да не просто винда так умеет, даже MS-DOS (БЕЗ многозадачности!) так умеет! [пруфа]. Правда здесь возникает, как я вычитал, да и из банальной логики, проблема безопасности. Впрочем, в аду я видел эту безопасность. Сейчас задача изучить, а не создать =) Спасибо! Помогли!

Добавлено через 1 час 26 минут
Всем спасибо.
Решил эту проблему проще.
Видимо, надо было сделать так раньше. Послать мультиязычные решения и подумать, а также выпрямить руки.
Впрочем - тема не бесполезна, ибо благодаря talis, я узнал много нового о винде =)
Ещё раз спасибо ответившим, а talis'у - огромное спасибо. Уже нашёл применение!
Yandex
Объявления
18.09.2011, 14:59     Консоль. Чисто технический вопрос.
Ответ Создать тему
Опции темы

Текущее время: 14:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru