Russian Qt Forum

Qt => Вопросы новичков => Тема начата: U.B.M. от Октябрь 24, 2012, 10:24



Название: "Лишние" процессы
Отправлено: U.B.M. от Октябрь 24, 2012, 10:24
Доброго времени суток.

Есть поток QMyThrd, который открывает COM-порт (больше поток ничего не делает)
Код:
int fd = open("/dev/ttyS0", ...);

В main.cpp прописываю
Код:
QMyThrd *Thrd = new QMyThrd;
Thrd->start();

далее набираю lsof /dev/ttyS0 - вижу что 3 процесса (у них всё одинаково, кроме PID разумеется - пиды n, n+1, n+2 - что тоже впринципе ожидаемо) работают с /dev/ttyS0.


Если же я в main.cpp прописываю открытие порта без использования потока
Код:
int fd = open("/dev/ttyS0", ...);

то lsof /dev/ttyS0 показывает, что только 1 процесс работает с /dev/ttyS0.

Вопрос "почему так происходит?", а не какой-нибудь другой.

P.S. Надеюсь, что правило "на чётко поставленный вопрос можно ожидать четкий ответ" в данном случае сработает  :)


Название: Re: "Лишние" процессы
Отправлено: Bepec от Октябрь 24, 2012, 10:35
По моему разумению, у вас показывается
1 - GUI поток приложения(основной)
2 - поток QThread
3 - поток fileStream, или чем ты там открываешь. В принципе всё, ннэ?


Название: Re: "Лишние" процессы
Отправлено: U.B.M. от Октябрь 24, 2012, 12:34
По моему разумению, у вас показывается
1 - GUI поток приложения(основной)
2 - поток QThread
3 - поток fileStream, или чем ты там открываешь. В принципе всё, ннэ?

Возможно, но если я поток не делаю, то 2-й пункт (QThread) пропадает, а 3-й ("или чем ты там открываешь") пункт должен как бы оставаться - я же открываю таки порт.  :-\

P.S. Опять же повторюсь, вопрос задается ради расширения кругозора.


Название: Re: "Лишние" процессы
Отправлено: Bepec от Октябрь 24, 2012, 13:46
Дебагер в руки, контрольные точки в руки.

Точка - запуск программы, точка - создание потока, точка - запуск потока, точка - запуск общения с портом.

И твоё расширение кругозора расширится :)