Russian Qt Forum

Qt => Общие вопросы => Тема начата: Pupil от Март 14, 2011, 10:07



Название: Определение запущено или не запущено другое приложение.
Отправлено: Pupil от Март 14, 2011, 10:07
 ???
Доброе утро!

Qt 4.5.3, Red Hat Linux. Пытаюсь определить запущено или не запущено стороннее приложение.
В прошлой теме нашёл кусок для Xp:

Код:
// Получение списка процессов
/***************************************************************************/
 
class LProcessInfo {
public:
LProcessInfo() {
      memset( &pi, 0, sizeof(PROCESSENTRY32) );
   }
LProcessInfo( PROCESSENTRY32 p ) {
      memset( &pi, 0, sizeof(PROCESSENTRY32) );
      init(p);
   }
  ~LProcessInfo() { }
/**/
void init( PROCESSENTRY32 p ) { memcpy( &pi, &p, sizeof(PROCESSENTRY32) ); }
   /**/
   luint32 id()          const { return pi.th32ProcessID;       }
   luint32 size()        const { return pi.dwSize;              }
   luint32 usage()       const { return pi.cntUsage;            }
   luint32 module_id()   const { return pi.th32ModuleID;        }
   luint32 threads()     const { return pi.cntThreads;          }
   luint32 parent_id()   const { return pi.th32ParentProcessID; }
   lint32  parent_pri()  const { return pi.pcPriClassBase;      }
   luint32 flags()       const { return pi.dwFlags;             }
   const lchar*name()    const { return &pi.szExeFile[0];       }
   /**/
   bool operator< ( const LProcessInfo& pi ) {
      return l_strcmpi( name(), pi.name() ) < 0;
   }
private:
   PROCESSENTRY32 pi;
};
 
/***************************************************************************/
 
class LProcessInfoList: public LVector<LProcessInfo> {
public:
   LProcessInfoList() { refresh(); }
  ~LProcessInfoList() {}
   /**/
   void refresh() {
HANDLE pl;
PROCESSENTRY32 pe;
/**/
pl = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pe.dwSize = sizeof(PROCESSENTRY32);
pe.th32ParentProcessID = 0;
/**/
if ( Process32First(pl, &pe) ) {
do {
push_back( LProcessInfo(pe) );
pe.th32ParentProcessID = 0;
} while ( Process32Next(pl, &pe) );
}
CloseHandle(pl);
}
};
 
/***************************************************************************/

   

Для Ред Хата оно также или необходима иная реализация? Просветите, пожалуйста.

P.S. сторонний класс QtSingleApplication также не нашёл у троллей.  ::)


Название: Re: Определение запущено или не запущено другое приложение.
Отправлено: Пантер от Март 14, 2011, 10:14
Читай маны по каталогу /proc


Название: Re: Определение запущено или не запущено другое приложение.
Отправлено: GreatSnake от Март 14, 2011, 11:29
Цитировать
P.S. сторонний класс QtSingleApplication также не нашёл у троллей.
Исходники (http://qt.gitorious.org/qt-labs/simulator/trees/12ab5a5de4c71279cac159991c41d91ec58d3946/src/shared/qtsingleapplication)
Описание (http://doc.qt.nokia.com/solutions/4/qtsingleapplication/qtsingleapplication.html)


Название: Re: Определение запущено или не запущено другое приложение.
Отправлено: Pupil от Март 14, 2011, 13:06
Всем откликнувшимся - Спасибо! QtSingleApplication не пойдёт - некрасивый способ реализации.


Название: Re: Определение запущено или не запущено другое приложение.
Отправлено: GreatSnake от Март 14, 2011, 13:11
Цитировать
QtSingleApplication не пойдёт - некрасивый способ реализации.
А тебе его и не советовали :)


Название: Re: Определение запущено или не запущено другое приложение.
Отправлено: Pupil от Март 14, 2011, 13:18
Не спорю. Но пока туплю как вывести список процессов в линухе.  ;)


Название: Re: Определение запущено или не запущено другое приложение.
Отправлено: kuzulis от Март 14, 2011, 14:27
man ps


Название: Re: Определение запущено или не запущено другое приложение.
Отправлено: Pupil от Март 14, 2011, 21:39
Вопрос решился. Всем огромное Спасибо!  ;D


Название: Re: Определение запущено или не запущено другое приложение.
Отправлено: Пантер от Март 14, 2011, 22:08
Если сам решаешь вопрос, приводи решение, чтобы другие потом могли воспользоваться.