Jump to content

    

Чтение с консольного проекта.

Создал в QT консольный проект и пытаюсь считать вводимую строку.

while (1)
    {
        ch_ptr = fgets(cons_str, 128, stdin);
        if (ch_ptr != NULL)
        {
          printf("%s", cons_str);
        }
    }

ничего не считывается.

Консольный проект в windows работает - я считываю строку.

Share this post


Link to post
Share on other sites

Да запомните уже наконец, что библиотека называется Qt, а QT -- это QuickTime.

Напишите программу без всяких Qt, посмотрите, как себя ведёт этот же цикл.

B зачем вы пишете в раздел, который называется "Linux", если у вас

1 час назад, jenya7 сказал:

Консольный проект в windows работает

Напишите такую консольную же программу в Linux и посмотрите, как она себя ведёт.

Share this post


Link to post
Share on other sites
6 minutes ago, andrew_b said:

Да запомните уже наконец, что библиотека называется Qt, а QT -- это QuickTime.

Напишите программу без всяких Qt, посмотрите, как себя ведёт этот же цикл.

B зачем вы пишете в раздел, который называется "Linux", если у вас

Напишите такую консольную же программу в Linux и посмотрите, как она себя ведёт.

без всяких Qt смысла нет - в Qt все отлично работает. лучшей среды разработки я пока не нашел.

я написал два консольных проекта - в Windows и в Linux. Тот который в Windows - работает,  а тот который в Linux - не работает.

 

Share this post


Link to post
Share on other sites

моя ошибка. не туда вставил код. все работает.

Edited by jenya7

Share this post


Link to post
Share on other sites

так работает

ch_ptr = fgets(cons_str, 256, stdin);
if (ch_ptr != nullptr)
{
    COMPARSER_ParseCommand(cons_str);
}

но чтение из консоли блокирующая операция. если ничего не пришло я застрял в fgets. это решаемо как то?

 

выделил чтение с консоли в отдельный тред.

Edited by jenya7

Share this post


Link to post
Share on other sites
On 12/29/2019 at 3:12 AM, Eddy_Em said:

Пример.

Читаем man select, man eselect, man poll…

 

 

Или создаем новые задачи или потоки, но надо будет синхронизировать. select проще.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now