Linux/C++: Programm nur einmal starten

Hallo,

ich moechte verhindern, dass das Programm A auf einem Rechner mehr als einmal gestartet wird. Ob eine Fehlermeldung kommt oder der Aufruf ignoriert wird, ist mir völlig egal.

Hat jemand eine Idee, wie das unter Linux mit C/C++ realisieren kann ?

Sven

Hallo !

ich moechte verhindern, dass das Programm
A auf einem Rechner mehr als einmal

Netscape & Co loesen dieses Problem immer mit einem lock - file, welches beim Start angelegt und beim Beenden geloescht wird. Wenn netscape startet, schaut es einfach nach ob das lock File existiert. Falls Dein Programm allerdings abstuerzt und deshalb das lock - File nicht mehr loeschen konnte, musst Du von Hand loeschen.

Du koenntest von Deinem Programm aus ps aufrufen und die Ausgaben in eine Datei umleiten. Diese Datei koenntest Du dann auswerten und nachschauen, ob Dein Programm schon laeuft.

Tschuess !

Andreas

Hallo!

Abgesehen vom Ursprungsproblem dürfte es wohl besser sein den Task (oder unter Windows) den Fensternamen zu suchen und daran zu entscheiden ob das Programm bereits läuft. Netscape scheint mir nicht unbedingt ein Logfile zu schreiben (bzw. nicht nur daran zu erkennen das er läuft). Ich beende ihn öfters mal aus der Taskleiste weil er hängt. Er startet immer dann, wenn der Task NetScape nicht vorhanden ist.

Nur wie man eine Bafrage macht, ob ein Task vorhanden ist, weiß ich für Linux nicht.

Gruß

  • Michgael -

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo !

Abgesehen vom Ursprungsproblem dürfte es
wohl besser sein den Task (oder unter
Windows) den Fensternamen zu suchen und
daran zu entscheiden ob das Programm
bereits läuft. Netscape scheint mir nicht
unbedingt ein Logfile zu schreiben (bzw.
nicht nur daran zu erkennen das er
läuft). Ich beende ihn öfters mal aus der
Taskleiste weil er hängt.

Du sprichst hier sicherlich immer von Netscape unter Windows. Ich meinte aber Netscape unter Linux. Dort wird tatsaechlich ein Lock- File geschrieben. Wenn das Lock- File vorhanden ist und man versucht Netscape noch einmal zu starten bekommt man eine Warnung. Natuerlich ist das ziemlich nervig, wenn das Programm abstuerzt und sein Lock-File nicht loescht. Allerdings ist das unter Linux nicht so haufig der Fall wie unter Win. Netscape ist hier allerdings genauso fehlerhaft wie unter Windows.

Die Loesung der Abfrage ob der Task schon existiert gefaellt mir allerdings auch besser. Mit Fenster suchen ist hier allerdings nicht viel. Dafuer gibts aber den Befehl ps der ausfuehrlichste Infos zu allen Tasks liefert. Mein Vorschlag war deshalb die Ausgabe von ps in eine Textdatei umzuleiten und spaeter auszulesen. Mit Sicherheit gibts C Funktionen fuers Prozessmanagment unter Linux. Leider hab ich da jetzt keine Ahnung.

Tschuess !

Andreas