Anzeige:
Ergebnis 1 bis 7 von 7

Thema: C: Wie Kommandozeilen nebenläufig ausführen?

  1. #1
    Registrierter Benutzer
    Registriert seit
    03.09.2006
    Beiträge
    120

    Question C: Wie Kommandozeilen nebenläufig ausführen?

    Für Kommandozeilen vom C-Programm aus verwende ich bisher execl, aber das ist ja nicht nebenläufig. In der Man-Page dazu finde ich auch nichts nebenläufiges.
    Bleibt nur ein fork und anschließend execl um Kommandozeilen nebenläufig auszuführen?

  2. #2
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Das oder den Shell-Mechanismus fürs Ausführen im Hintergrund verwenden:
    Code:
    system("program &");
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  3. #3
    Registrierter Benutzer
    Registriert seit
    03.09.2006
    Beiträge
    120
    Zitat Zitat von jeebee Beitrag anzeigen
    Das oder den Shell-Mechanismus fürs Ausführen im Hintergrund verwenden:
    Code:
    system("program &");
    Funktioniert das?
    Ich denke die Shell wartet auf program.

    Naja, ich kann es ja mal mit nohup probieren.

  4. #4
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    also das hier funktioniert (sprich "end" wird sofort ausgegeben und das Programm terminiert, während das sleep im Hintergrund weiterläuft.)

    Code:
    #include <stdio.h>
    
    int main() {
        system("sleep 10 &");
        printf("end\n");
        return 0;
    }
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    fork und dann exec haben natürlich den Vorteil, dass du im Hauptprogramm die PID des anderen kennst und es daher auch kontrollieren (z.B. killen) kannst.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  6. #6
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    if ( !(pid=fork()) ) execYY(..);
    if ( pid<0 ) error....

    ist der standardweg

  7. #7
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Ist mir bewusst, der TE fragte aber nach alternativen Wegen, dies zu realisieren (genauer gesagt, nach einem Weg ohne selber forken zu müssen -- meine Interpretation von Post #1).
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

Lesezeichen

Berechtigungen

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