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

Název: Zjištění přihlášeného užvatele z daemona
Přispěvatel: 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.
Název: Re: Zjištění přihlášeného užvatele z daemona
Přispěvatel: Firzen 05 Října 2009, 15:29:00
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? :)
Název: Re: Zjištění přihlášeného užvatele z daemona
Přispěvatel: Dogmeat 05 Října 2009, 16:15:14
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.
Název: Re: Zjištění přihlášeného užvatele z daemona
Přispěvatel: Martin Kiklhorn 05 Října 2009, 16:34:43
http://www.faqs.org/docs/linux_scratch/chapter06/configure.html (6.63.8) ,projít zdrojáky třeba w, who
Název: Re: Zjištění přihlášeného užvatele z daemona
Přispěvatel: Dogmeat 07 Října 2009, 21:47:01
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.
Název: Re: Zjištění přihlášeného užvatele z daemona
Přispěvatel: mka 08 Října 2009, 11:16:41
A to je takový problém ten string v C++ zpracovat?
Název: Re: Zjištění přihlášeného užvatele z daemona
Přispěvatel: nettezzaumana 08 Října 2009, 13:40:16
man utmp ## u me utmp(5)
man utsname.h ## u me utsname.h(0p)
Název: Re: Zjištění přihlášeného užvatele z daemona
Přispěvatel: Dogmeat 14 Října 2009, 10:55:00
Nakonec vyřešeno za pomocí:

setutent();
getutent(); v cyklu
endutent();