Название: Как получить результат консольной команды top через QProcess Отправлено: brwclc от Февраля 28, 2012, 11:05 Задача - считать данные, выдаваемые консольной командой "top" в линуксе, в массив QByteArray. Ниже привожу алгоритм. В результате returnData пустой. Почему не считываются данные с консоли? (Использовал этот алгоритм с другими командами - проблем нет, данные выдаются.)
Код: QProcess* pConsoleProc = new QProcess; Название: Re: Как получить результат консольной команды top через QProcess Отправлено: Пантер от Февраля 28, 2012, 11:08 Потому что top отрисовывает данные. Юзай ps.
Название: Re: Как получить результат консольной команды top через QProcess Отправлено: mutineer от Февраля 28, 2012, 11:10 А почему ты в старт отдаешь /bin/sh, а не сразу top (ну или ps, как советуют)?
Название: Re: Как получить результат консольной команды top через QProcess Отправлено: brwclc от Февраля 28, 2012, 11:13 Можно поподробней, что за "ps" ?
Название: Re: Как получить результат консольной команды top через QProcess Отправлено: mutineer от Февраля 28, 2012, 11:14 Название: Re: Как получить результат консольной команды top через QProcess Отправлено: brwclc от Февраля 28, 2012, 11:19 Понятно. Информация о процессах как раз мне и не нужна. Из top-а мне нужна информация о CPU, MEM и SWAP.
Название: Re: Как получить результат консольной команды top через QProcess Отправлено: GreatSnake от Февраля 28, 2012, 15:19 Понятно. Информация о процессах как раз мне и не нужна. Из top-а мне нужна информация о CPU, MEM и SWAP. Мде... Про procfs (http://ru.wikipedia.org/wiki/Procfs) похоже не слышал?Тогда делай: Код
Название: Re: Как получить результат консольной команды top через QProcess Отправлено: brwclc от Февраля 28, 2012, 22:05 Да да... Только вот "cat /proc/cpuinfo" - это общая информация о процессоре. Что не дает обновляемую информацию о его загруженности и работе.
Похоже, придется изучать исходники top... :( Название: Re: Как получить результат консольной коман Отправлено: brwclc от Февраля 28, 2012, 22:09 Потому что top отрисовывает данные. Кстати, "top -n 1 > top_log.txt" тоже не отрабатывается купроцессом. В итоге пустой файл. Получается, не в прорисовке дело. Название: Re: Как получить результат консольной команды top через QProcess Отправлено: twp от Февраля 28, 2012, 22:31 а какой код используется для запуска top?
Название: Re: Как получить результат консольной коман&# Отправлено: BRE от Февраля 28, 2012, 22:45 Кстати, "top -n 1 > top_log.txt" тоже не отрабатывается купроцессом. Так и должно быть.Обработкой перенаправление пайпов (> top_log.txt) занимается шел, а его ты как раз не запускаешь. Да? Название: Re: Как получить результат консольной команды top через QProcess Отправлено: Rem Norton от Февраля 28, 2012, 23:47 Да да... Только вот "cat /proc/cpuinfo" - это общая информация о процессоре. Что не дает обновляемую информацию о его загруженности и работе. Не все так плохо. Может вот это (http://www.koders.com/cpp/fid75C5EE2AD361E478A0BAE50A60AF474BA56070E1.aspx?s=search) как-то поможет.Похоже, придется изучать исходники top... :( Название: Re: Как получить результат консольной команды top через QProcess Отправлено: GreatSnake от Февраля 29, 2012, 14:51 Да да... Только вот "cat /proc/cpuinfo" - это общая информация о процессоре. Что не дает обновляемую информацию о его загруженности и работе. А что посмотреть что находится в /proc не судьба?К тому же сам проcил инфу о CPU. Инфо о загрузке читается из /proc/loadavg либо берётся из getloadavg(). А вот читать вывод top-а, хм... Название: Re: Как получить результат консольной команды top через QProcess Отправлено: brwclc от Февраля 29, 2012, 15:05 Цитировать А что посмотреть что находится в /proc не судьба? /proc/loadavgК тому же сам проcил инфу о CPU. Инфо о загрузке читается из /proc/loadavg либо берётся из getloadavg(). А вот читать вывод top-а, хм... The first three fields in this file are load average figures giving the number of jobs in the run queue (state R) or waiting for disk I/O (state D) averaged over 1, 5, and 15 minutes. // первые три поля - поля средней загрузки, показывающие число работ в рабочей очереди или ждущие ввода/вывода на диск, усредненные за 1, 5 и 15 минут. И это информация о процессоре в реальном времени? Или Вы серьезно считаете, что я в /proc/ никогда в жизни не заглядвал? :o Ладно, проблему временно решил sysstat-ом. Название: Re: Как получить результат консольной коман&# Отправлено: brwclc от Февраля 29, 2012, 15:07 Кстати, "top -n 1 > top_log.txt" тоже не отрабатывается купроцессом. Так и должно быть.Обработкой перенаправление пайпов (> top_log.txt) занимается шел, а его ты как раз не запускаешь. Да? Название: Re: Как получить результат консольной команды top через QProcess Отправлено: GreatSnake от Февраля 29, 2012, 15:19 И это информация о процессоре в реальном времени? Или Вы серьезно считаете, что я в /proc/ никогда в жизни не заглядвал? :o Загляни ещё раз и увидишь /proc/stat, в котором всё это есть. |