pid von aufgerufenem prozess erfragen ?



  • hallo,
    habe folgendes probelem :
    mein programm startet und beendet ab und zu prozesse.
    so , einen prozess per system(); zu starten ist ja kein problem,
    jedoch brauche ich die pid von ihm. auf den zustartenden prozess ( halflifeserver ) habe ich keinen einfluss.
    habe jetzt echt keinen plan wie ich meinen schönen hlds ( hl-server )
    dazu bewegen soll mir seine pid mitzuteilen, ohne dass mein programm
    die ganze zeit an dem prozess "klebt".

    wenn jemand ne idee hätte wäre cool.
    weiß, dass es scheiße formuliert is 😉

    // maSta



  • wenn du schon ueber system() gehst, koenntest du nach einer bestimmten wartezeit system() mit sowas wie "ps -e|grep hlds" starten. daraus muesstest du dann die pid rausholen koennen.



  • *hust*

    man pidof

    edit: btw, wieso man die Funktion system meiden soll

    [ Dieser Beitrag wurde am 27.04.2003 um 00:39 Uhr von nman editiert. ]



  • Ich würde es mit fork() und exec*() machen.

    pit_t pid = fork();
    
    if( pid==0 ) {
      // child
      execl("...", ...);
    
    } else {
      cout<<"Prozess hat pid: "<<pid<<endl;
      wait(0);
    }
    

    Da haste dein pid, und sogar das system() ist verschwunden.


Anmelden zum Antworten