Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: alex от Декабрь 12, 2012, 16:54



Название: посоветуйте как работать с процессом
Отправлено: alex от Декабрь 12, 2012, 16:54
Значит имеется некоторая программа А, которую я запускаю как процесс в другой программе на кутэ B.
Запускаю вот так :
Код:
QProcess prc;
prc.start("Aprogram");
....
и тут меня посещает вопрос, а как обрабатывать данные из входящего потока std::cout .
Ведь это очень неудобно, потому что данные в Aprogram устроены так :
Код:
struct point{
int x;
int y;
}

vector<point> points;
Вообщем этот вектор мне надо передавать из Aprogram в программу на Qt, используя процессы и потоки, подскажите как это реализовать. Или предложите альтернативный вариант. :-\


Название: Re: посоветуйте как работать с процессом
Отправлено: mutineer от Декабрь 12, 2012, 16:59
Вот тебе альтернативный вариант - передавать через сокет


Название: Re: посоветуйте как работать с процессом
Отправлено: alex от Декабрь 12, 2012, 19:16
Я в них не разбираюсь, а времени до сдачи осталось не так много


Название: Re: посоветуйте как работать с процессом
Отправлено: Bepec от Декабрь 12, 2012, 19:35
Что мешает гнать хрень поток QDataStream в стандартный вывод?


Название: Re: посоветуйте как работать с процессом
Отправлено: alex от Декабрь 12, 2012, 19:56
Что мешает гнать хрень поток QDataStream в стандартный вывод?
спасибо! не знал о нем, пойду гнать
Только остается одна проблемка - процесс который я запускаю, который должен мне прислать vector<point> пишется в MSVS .


Название: Re: посоветуйте как работать с процессом
Отправлено: Igors от Декабрь 13, 2012, 09:26
Только остается одна проблемка - процесс который я запускаю, который должен мне прислать vector<point> пишется в MSVS .
В смысле это не консольное приложение или в чем проблема?


Название: Re: посоветуйте как работать с процессом
Отправлено: Bepec от Декабрь 13, 2012, 09:51
Ёмоё. Реализуйте свой мини протокол. О том, что исходные данные поставляются из другой программы надо было писать в 1 посте.

Сделайте как в примерах Qt. Сначала идёт размер передаваемого вектора. Далее поочередно идут байты. Проверяете - если несоответствие то аллес капут. Иначе - вери гуд и гоните во что угодно.

PS и вообще у вас прямое почти что соединение. Что мешает тупо принимать данные в виде вектора vector<int> simplePointVector?
И уже более искушенная задача - тудо гнать вектор из основной программы в виде char*. А его конец и начало определять по разделителям.


Название: Re: посоветуйте как работать с процессом
Отправлено: alex от Декабрь 14, 2012, 21:26
Ёмоё. Реализуйте свой мини протокол. О том, что исходные данные поставляются из другой программы надо было писать в 1 посте.

Сделайте как в примерах Qt. Сначала идёт размер передаваемого вектора. Далее поочередно идут байты. Проверяете - если несоответствие то аллес капут. Иначе - вери гуд и гоните во что угодно.

PS и вообще у вас прямое почти что соединение. Что мешает тупо принимать данные в виде вектора vector<int> simplePointVector?
И уже более искушенная задача - тудо гнать вектор из основной программы в виде char*. А его конец и начало определять по разделителям.

не додумался - слишком простая идея) спасибо , мастер


Название: Re: посоветуйте как работать с процессом
Отправлено: Bepec от Декабрь 14, 2012, 22:59
Всегда пожалуйста, ваш КО. ©