View Full Version : [c++]background sotto Windows....
Ciao a tutti!!!!
vi chiedo un'informazione semplice semplice....
devo far girare un mio programma in c++ in background...
sotto linux basta una & ma...sotto Windows???
E soprattutto, è qualcosa che "aggiungo" quando eseguo il mio programma o devo aggiungere qualcosa nel codice??
vorrei che il programma partisse in background di "defoult" senza che sia l'utente a specificarlo quando avvia il programma...è possibile??
grazie a tutti in anticipo....ma fatemi sapere!!!!! :)
devo far girare un mio programma in c++ in background...
sotto linux basta una & ma...sotto Windows???
E soprattutto, è qualcosa che "aggiungo" quando eseguo il mio programma o devo aggiungere qualcosa nel codice??Ciao. Normalmente per "programma in background" si intende un programma che deve svolgere delle elaborazioni più o meno lunghe con una minima o anche nessuna interazione con l'utente.
Su linux se lanci un qualcosa dalla shell con comando &, succede che il comando viene eseguito in background e la shell non aspetta che il comando termini.
Quindi dipende molto da cosa fa il tuo programma e da come/dove viene avviato. Se ti spieghi meglio su cosa devi fare è meglio.
Ehm....scusami, mi sono spiegata male!!! Allora, ti racconto tutto...
Il mio programma prende in ingresso un file con una lista di URL e controlla ciclicamente se questi sono stati aggiornati...
quando questo accade il programma avvisa l'utente....
Quello che mi immagino io per background è che quando chiamo il mio programma dal prompt dei comandi questo parte ma poi mi "libera il prompt" (come sucede nella shell di linux aggiungendo & al nome del programma.) permettendomi di inviare altri comandi, mostrandomi solo l'avviso quando una pagina è stata aggiornata (dopodichè dovrebbe ritornare in background)
....è possibile una cosa del genere?
spero di essermi spiegata meglio, e grazie mille per la risposta!!!! :)
la
Quello che mi immagino io per background è che quando chiamo il mio programma dal prompt dei comandi questo parte ma poi mi "libera il prompt"Se la applicazione è una applicazione "gui" (non console), certo che ti "libera" il prompt! (cioè non aspetta la terminazione della applicazione).
Apri su Windows un "Prompt dei comandi" e lancia notepad oppure calc. Viene avviata l'applicazione e il prompt è subito disponibile. ;)
sottovento
25-05-2006, 16:14
Invece che lanciare la tua applicazione invocando semplicemente il suo nome, potresti farla precedere dalla keyword "start".
Esempio: invece di scrivere:
calcola
scrivi
start calcola
Non so se e' l'effetto che desideravi....
High Flying
Sottovento
beh...ora come ora il mio programma nn è un'applicazione GUI.....perchè nn libera assolutamente il prompt.....a questo punto la mia domanda è: come faccio a farla diventare gui??
....altrimenti dovrò optare per l'opzione di sottovento ed usare start che mi apre un'altro prompt.....ma non era esattamente quello che volevo!! (anzi...che vuole il prof!!! :P )
cmq grazie ad entrambi per l'interessamento!!!!
GUI è l'acronimo di Graphic User Interface - o più comunemente, interfaccia grafica -, e non penso che sia quello che vuole il tuo prof, anche se una soluzione con un'icona nella system tray non penso sia da buttar via! ...solo che la console a sto punto non c'azzeccherebbe na mazza!
Stavo pensando che magari potrebbe essere fattibile "trasformando" l'applicazione in un servizio, ma non so se i servizi possano indirizzare l'output alla console lasciandola libera quando non ne hanno bisogno!
'iao
No il mio programma non ha interfaccia grafica...e non mi è stata richiesta.
Orph3n, scusa per la mia infinita ignoranza in materia (abbiate pazienza)...cosa intendi per servizi??
ma possibile che nn ci sia un comando analogo al & di linux??
o una funzione del C/c++ che manda l'esecuzione in background?????
grazie della pazienza!!!
No il mio programma non ha interfaccia grafica...e non mi è stata richiesta.Nota che una applicazione sviluppata per essere "targata" GUI non necessariamente deve "far vedere" veramente qualcosa a video.
A livello di sorgente cambia il fatto che una applicazione console inizia con il main() mentre una applicazione GUI inizia con WinMain() (e i parametri sono completamente diversi!!). Poi ovviamente è anche una questione di linker, che va istruito a dovere con delle apposite opzioni per creare un eseguibile "marchiato" in un modo o nell'altro.
cosa intendi per servizi??Sui sistemi "NT based" (NT, 2000, XP, ecc...) un servizio è un eseguibile con delle caratteristiche particolari. Innanzitutto per lo sviluppo di un servizio in C/C++, è necessario usare le API Win32 relative al Service Control Manager. Il programma, in sostanza, è una applicazione "console" (la funzione principale è la classica main()) ma deve essere sviluppato in un modo ben preciso. Deve contenere, ad esempio, un "handler" specifico in modo che il SCM possa comunicare con il servizio. Inoltre un servizio deve essere registrato come tale nel registro di Windows.
Una delle peculiarità fondamentali di un servizio è che viene avviato prima del logon. In pratica viene avviato ben prima che all'utente appaia la classica finestra di autenticazione che chiede utente/password.
ma possibile che nn ci sia un comando analogo al & di linux??
o una funzione del C/c++ che manda l'esecuzione in background?????No, semmai il contrario. Il fatto che un processo va in background è, tra le altre cose, perché il processo "padre" che l'ha lanciato non aspetta la sua terminazione.
No il mio programma non ha interfaccia grafica...e non mi è stata richiesta.
Orph3n, scusa per la mia infinita ignoranza in materia (abbiate pazienza)...cosa intendi per servizi??
ma possibile che nn ci sia un comando analogo al & di linux??
o una funzione del C/c++ che manda l'esecuzione in background?????
grazie della pazienza!!!
certo che è possibile che non ci sia l'& di linux.. non vorrai mica paragonare il prompt di msdos con la shell di linux :Prrr:
comunque secondo me non ti resta che l'"esegui comando" dal menu start (o win+x se non erro). se lo lanci da lì va in background che io sappia..
il_luridone
25-05-2006, 19:50
Un servizio sotto windows è l'analogo di un demone (http://it.wikipedia.org/wiki/Demone_%28informatica%29) nei sistemi *nix.
edit: ops, vedo ora che ti hanno già risposto e in modo molto preciso
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.