Početak › Forumi › Linuks › Programiranje › [rešeno] Deamons
- This topic has 31 odgovor, 12 glasova, and was last updated 18 years, 11 months ranije by
veljkopopovic.
-
AutorČlanci
-
30. avgust 2007. u 1:14 pm #60829
jboban
Učesnikkoristis QT framework
Jeste. Omaklo mi se ono jedno Q u QHostAddress i provaljen sam 😉
sto je losa praksa, ali kad mora ‘ajde
Nije baš da se mora, ali kad je sve drugo u Qt-u, zašto ovo ne bi bilo? Zašto loša praksa?
Dalje, izgleda da si tvoju klasu izveo iz [tt]QTcpServer[/tt] cim pozivas [tt]listen[/tt] i [tt]errorString[/tt] bez objekta, ako je tako stavi potpuni kvalifikator bazne klase ispred listen, jer izgleda da se umesto [tt]QTcpServer::listen[/tt], poziva [tt]listen[/tt] iz [tt][/tt]
Da, izvedena je iz QTcpServer, ali ne mislim da se poziva pogrešna funkcija jer je poziv u konstruktoru. Suvišno je pisati potpuni kvalifikator bazne klase ispred svake funkcije članice kad nije statička.
AKo nije to, onda mozda zavisi od toga kako si detach-ovao klasu da bude daemon.
Biće da je ovo. Izgleda da je rešeno ovako:
[code]
// Daemonize current process
AppUtil::DoDaemonize();
QCoreApplication app(argc, argv);
// …
[/code]U prvoj verziji, koja nije radila, ovaj QCoreApplication app(argc, argv) je bio na početku.
Najbolje je da koristis [tt]QProcess::startDetached[/tt].
Ovo je bila samo proba na osnovu pomenutog teksta, a probaću sad i ovaj, svakako bolji način.
I jos nesto, losa praksa je mesati low-level C programiranje sa “high” level framework-om kao sto je QT, koliko je god moguce koristi QT i izbegavaj sve ostalo.
Čak i za network programiranje? 😎
Naravno, zato sam taj deo i “zavio” malo u AppUtil O01. septembar 2007. u 3:05 pm #60830sysctl
UčesnikSuvišno je pisati potpuni kvalifikator bazne klase ispred svake funkcije članice kad nije statička.
Nisam mislio ispred svake funkcije, vec samo ispred listen, ali ono …
I radi li ? A zasto je [tt]AppUtil::DoDaemonize();[/tt] static ?
Jos nesto, sto su svi komentari u kodu na engleskom ? 😀
3. septembar 2007. u 1:09 pm #60831jboban
UčesnikNisam mislio ispred svake funkcije, vec samo ispred listen, ali ono …
Kad ne treba, ne treba nigde.
I radi li ? A zasto je [tt]AppUtil::DoDaemonize();[/tt] static ?
Radi. Static zato što je bilo rano da se instancira i što je AppUtil Util klasa, kao što joj ime kaže. U tom trenutku, nije instanciran ni objekat glavne klase.
Jos nesto, sto su svi komentari u kodu na engleskom?
…umesto da su na staroslovenskom, ili bar srpskom i to ćirilicom >:D
Razloga ima više. Evo nekoliko:
– ne znam kako bi kompajler sažvakao ćirilicu
– nazivi ostalih funkcija su na engleskom, pa zato i mojih
– ako su svi nazivi fukcija na engleskom, onda su i nazivi promenljivih na engleskom
– ako su svi nazivi fukcija i promenljivih na engleskom, onda su i komentari na engleskom
– iako neki kažu “Govori srpski da te ceo svet razume”, ja se ne bih baš složio
– …
😎P.S. Nastavak u sledećem broju.
12. septembar 2007. u 1:35 pm #60832veljkopopovic
UčesnikPosto radite sa Qt-jem, imam par pitanja (prilicni sam pocetnik, tako da Vas ne cudi) 🙂
1. jel mogu da razvijam deamon-e u KDevelop okruzenju?
2. ako sam dobro shvatio how to koji mi je ovde preporucen, cinjenica da zatvaram standardne fajl deskriptore (i jos ono posla pre, oko fork current process, session ID, umask) govori sistemu da je u pitanju deamon. Jel’ to isto treba da uradim ako radim i u Qt-jevom framework-u? Pretpostavljam da ne treba da ukljucujem Qt-jeve GUI module u celu tu pricu jer ne zelim nikakvu interakciju sa korisnikom (ajde sto ja necu nego sto mi sistem ne da) 🙂 Imam Qt klasu koju treba da iskoristim za pisanje deamon-a, da li sam na dobrom putu? 🙂Pozdrav svima
Unapred hvala
12. septembar 2007. u 10:24 pm #60833jboban
Učesnik1. jel mogu da razvijam deamon-e u KDevelop okruzenju?
Da. Ja sam tako uradio.
2. Jel’ to isto treba da uradim ako radim i u Qt-jevom framework-u?
To nisam stigao da probam, ali mislim da treba. Jedino što ne moraš koristiti je fork(), nego možeš QProcess::startDetached.
Pretpostavljam da ne treba da ukljucujem Qt-jeve GUI module
Ne, oni su nepotrebni.
12. septembar 2007. u 11:19 pm #60834sysctl
UčesnikZa razliku od jboban, ja se “protivim” pisanju daemon-a u Qt ili bilo kakvom drugom GUI framework-u.
Prvo, daemon treba da bude mali, brz i kao sto kazu da obavlja jedan posao, ali da ga obavlja dobro. Stavljanje jos jednog layer-a izmedju srzi programa i sistema nije dobra ideja, po mom misljenju. Naravno sve zavisi, od iskustva, znanja i svrhe programa. Dalje, ako se misli da Qt poseduje prednost jer je portabilan na vise platformi, ni sa tim se ne slazem. Daemon, napisan u C-u ce moci da se kompajlira skoro na svim *nix sistemima koji postuju posix, pa (uz sitne izmene) cak i na windows-u.
Qt je pre svega GUI framework. Njegov network modul poseduje dosta korisnih klasa, ali po mom ubedjenju ove klase sluze za dodavanje korisnih osobina glavnom GUI programu. Na primer, web interfejs za kontrolu GUI programa, ftp client, jednostavan tcp server za proveru statusa programa, itd…
I jos jedna stvar, za Qt3 bi daemon povukao citav libqt-mt kao zavisnost (negde oko 8mb), pocevsi sa Qt4 moduli su izdeljeni tako da bi povukao samo qtcore i qtnetwork (sto je negde oko 2mb), plus program.
12. septembar 2007. u 11:41 pm #60835jboban
UčesnikNajbolje je da koristis [tt]QProcess::startDetached[/tt]. I jos nesto, losa praksa je mesati low-level C programiranje sa “high” level framework-om kao sto je QT, koliko je god moguce koristi QT i izbegavaj sve ostalo.
>:D
13. septembar 2007. u 12:06 am #60836sysctl
UčesnikOvo gore je istrgnuto iz konteksta. >:(
Misli se ako MORAS da koristis Qt koristi samo Qt i ne mesaj ga sa libc mreznim pozivima.
I da ponovim: za mrezno programiranje sam PROTIV Qt-a.Nemo’ da mi izvrces reci, bre 😀
13. septembar 2007. u 9:14 am #60837jboban
UčesnikNaravno, šalim se. Povod je što je čovek izrazio želju ili potrebu da koristi Qt O0
14. septembar 2007. u 1:37 pm #60838veljkopopovic
UčesnikHvala, resili ste mi problem. Svakako je vodjena diskusija o tome da li na C-u ili na Qt -ju. Svakako ima manje “bola” sa Qt-jem i da je mnogo “podesnije” za pocetnike. Konkretno, u pitanju je RS232 rutina koja treba nesto da radi, pa zavisno od nje da se reaguje, tako da nece biti problem prebaciti se na C rutine ako se kolege sloze…
Pozdrav svima.
-
AutorČlanci
Moraš biti prijavljen da bi postavio komentar u ovoj temi.