Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 5 von 5

Thema: C Programm unter Linux nur einmal starten

  1. #1
    Registriert seit
    22.07.2006
    Beiträge
    132
    Danke
    24
    Erhielt 18 Danke für 12 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe ein C Programm unter Linux und möchte verhindern das es auf einem Rechner mehrfach gestartet wird. Wie geht das am einfachsten?
    Zitieren Zitieren C Programm unter Linux nur einmal starten  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Am einfachsten ist es sicher das eigentliche Programm mittels einen Shellskriptes zu starten und darin die Prozessanzeige "ps" auszuwerten. Angenommen dein Programm heißt "testprogramm":
    Code:
    #!/bin/sh
    if ps a|grep testprogramm;
        then echo "testprogramm laeuft schon";
    else echo "testprogramm laeuft nicht, wird gestartet.";
        /home/thomas/testprogramm;
    fi
    Um das direkt aus dem C-Programm auszuwerden wirds sicherlich mit fork() und exec() etwas aufwändiger.

  3. #3
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Zitat Zitat von Merten1982 Beitrag anzeigen
    Ich habe ein C Programm unter Linux und möchte verhindern das es auf einem Rechner mehrfach gestartet wird. Wie geht das am einfachsten?
    Die traditionelle Methode ist die Benutzung eines LOCKFILES.
    Du legst zuerst den Namen des Lockfiles fest, zB /var/lock/progname.
    Beim Aufruf deines Programmes schaust du zuerst, ob es das
    Lockfile schon gibt.
    Falls ja: Programm läuft schon, Ende.
    Falls nein: Erzeuge das Lockfile, und weiter im Programm
    Zum Schluss noch Lockfile löschen.


    Die Methode von Thomas_v2.1 funktioniert natürlich auch, jedoch muss
    dann sichergestellt sein, dass dein Programm nicht noch auf andere Art
    aufgerufen wird.

    Du hast also die Wahl.
    Ciao.
    Zitieren Zitieren Lockfile  

  4. #4
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Zitat Zitat von argv_user Beitrag anzeigen
    Die traditionelle Methode ist die Benutzung eines LOCKFILES.
    Du legst zuerst den Namen des Lockfiles fest, zB /var/lock/progname.
    Beim Aufruf deines Programmes schaust du zuerst, ob es das
    Lockfile schon gibt.
    Falls ja: Programm läuft schon, Ende.
    Falls nein: Erzeuge das Lockfile, und weiter im Programm
    Zum Schluss noch Lockfile löschen.
    ...

    Das kann aber echte Probleme bereiten. Geh mal von einem Stromausfall aus während das Programm läuft.

    Dann muss man den Lockfile von Hand löschen.
    If you open your Mind too much, your Brain will fall out.

  5. #5
    Registriert seit
    09.05.2006
    Beiträge
    94
    Danke
    19
    Erhielt 5 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Unter Windows macht man das mit:

    Code:
    HANDLE CreateMutex(   LPSECURITY_ATTRIBUTES lpMutexAttributes, // pointer to security attributes   
    BOOL bInitialOwner,  // flag for initial ownership   
    LPCTSTR lpName       // pointer to mutex-object name );
    Das Gegestück zu CreateMutex ist in Linux 'pthreads_mutex_init'.
    Ich kann Dir leider keinen Code in Linux anbieten, aber mit Hilfe dieser Funktion
    sollte das möglich sein.
    Mit Google findet man mit 'pthread_mutex_init process' sehr viel über das Thema.

    Servus


    Vbxler

Ähnliche Themen

  1. CP5611 mit ndiswrapper unter Linux?
    Von LowLevelMahn im Forum Feldbusse
    Antworten: 4
    Letzter Beitrag: 02.01.2009, 14:07
  2. Tintenstrahldrucker unter Linux
    Von PeterEF im Forum PC- und Netzwerktechnik
    Antworten: 5
    Letzter Beitrag: 17.11.2006, 17:51
  3. Antworten: 0
    Letzter Beitrag: 05.10.2006, 13:56
  4. Programm auf einmal in AWL
    Von Anonymous im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 03.01.2006, 21:46
  5. FTP-Server unter Linux einrichten
    Von Lobo im Forum Stammtisch
    Antworten: 1
    Letzter Beitrag: 21.08.2005, 21:31

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •