C++ Konsolenprogramm in den Hintergrund schicken ?


TheDark

Still Fresh
Joined
Jan 5, 2007
Messages
71
Website
ad-infinitum.de
WEBSITE
http://ad-infinitum.de
Sooo. Naja wie der Name des Topics schon verrät, würde ich gern wissen wie man ein Programm das im Terminal läuft in den Hintergrund schicken kann.
Ich weiss das dies unter Linux geht, indem man einfach ein & anhängt, aber wie kann man das aus dem Programm heraus machen ?
Hab das beim daemon von amule entdeckt. Wenn man ihm -f mitschickt sagt er nach dem initialisieren 'forking to background' und schwupps ist die Konsole wieder frei.
Ich frage erstmal interessenshalber, da es doch ganz nützlich ist :)
 
dafuer gibts die c lib funktion int daemon(int nochdir, int noclose); . der dazugehoerige include ist unistd.h

aus der manpage:

The daemon() function is for programs wishing to detach themselves from the controlling terminal and run in the background as system daemons.

Unless the argument nochdir is non-zero, daemon() changes the current working directory to the root ("/").

Unless the argument noclose is non-zero, daemon() will redirect standard input, standard output and standard error to /dev/null.
 
oder du baust dir die funktion selbst
chdir("/"); um das aktuelle verzeichnis beispielsweise zum umounten freizugeben
if(fork()!=0)
{
/*vaterprozess rückgabewert von fork ist immer die pit nummer, wohingegen der sohn eine 0 bekommt, also lasse den vater in main beenden und führe den code nurnoch im kindprozess aus*/
return 0;
}
dann ausgabe auf dateien null device lenken guck dir dazu dup bzw dup2 an
 
Back
Top