Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Dogmeat 05 Října 2009, 12:45:46
-
Zdravím,
rád bych se zeptal, jestli zde někdo netuší, jakým způsobem zjistit z běžícího daemona (v c++), zda je na daném pc (ideláně s libovolnou distribucí) někdo přihlášený (ať už lokálně nebo vzdáleně).
Stačí bohatě i link na nějaký nápad :)
Předem díky za pomoc.
-
Hmm, tak já nechci dělat hloupého, ale když už se ti spustí daemon, tak asi někdo přihlášený být musí, ne? :)
-
Já mám za to, že daemon běží i pokud není nikdo přihlášený na přihlašovací obrazovce, s čímž počítám při tvorbě mé aplikace :)
A právě z toho důvodu hledám nějaký způsob, jak zjistit, zda je nějaký uživatel přihlášený či zda je systém na logon obrazovce.
-
http://www.faqs.org/docs/linux_scratch/chapter06/configure.html (6.63.8) ,projít zdrojáky třeba w, who
-
Zkoumal jsem možnost použití "who" a vypadá to zajímavě a použitelně. Podařilo se mi úspěšně zavolat jej v normální aplikaci a poté vypsat přijatý výsledek do konzole. Narazil jsem ovšem na problém, jak dále zpracovat tento výsledek od:
int prom = system("who -u");
cout << prom;
V prom se totiž nalézá při vytištění na konzoli kompletní výsledek (a ne hodnota typu int, dojde k vytištění řetězce) a já potřebuji nějakým způsobem ověřit, co přesně vrátila a ne ji tisknout (například zda je NULL nebo zda je počet zjištěných uživatelů roven nule).
Pátral jsem po googlu a nepodařilo se mi narazit na nic, co by popisovalo návratové hodnoty od takto použitého who (nebo spíše system()) a jak je zpracovat.
Díky za každou radu.
-
A to je takový problém ten string v C++ zpracovat?
-
man utmp ## u me utmp(5)
man utsname.h ## u me utsname.h(0p)
-
Nakonec vyřešeno za pomocí:
setutent();
getutent(); v cyklu
endutent();