Akela: Programm starten und PID zurückgeben

Hallo,

ich möchte innerhalb eines Perlscripts unter win32 ein Programm starten und dessen PID erhalten.
Wie stelle ich das an ?

ciao Andreas

  1. Hallo,

    ich möchte innerhalb eines Perlscripts unter win32 ein Programm starten und dessen PID erhalten.
    Wie stelle ich das an ?

    ciao Andreas

    in der Variablen $$ sollte die PID stehen. Alternativ kannst Du auch $PID oder $PROCESS_ID abfragen.

    barfuesser

    1. Hallo,

      Hallo,

      in der Variablen $$ sollte die PID stehen. Alternativ kannst Du auch $PID oder $PROCESS_ID abfragen.

      barfuesser

      Was Du hier beschreibst, ist die PID des aktuellen scripts. Ich brauche aber die PID des gestarteten Programms. So will ich z.B. einen Notepad.exe starten und davon die PID erfahren.

      ciao Andreas

      1. Was Du hier beschreibst, ist die PID des aktuellen scripts. Ich brauche aber die PID des gestarteten Programms. So will ich z.B. einen Notepad.exe starten und davon die PID erfahren.

        ciao Andreas

        Sorry, Missverstaendnis von mir.

        Sieh Dir mal in der MSDN den Befehl CreateProcess an, der sollte tun was Du möchtest. Du benötigst allerdings die Bibliothek Win32::API.

        barfuesser

        1. Danke barfuesser,

          hab die Lösung gepostet, es geht auch mit Perl-Modulen.

          ciao Andreas

  2. Falls es jemanden interessiert, hier die Lösung

    ciao Andreas

    sub start_prog
      {
        my ( $cmd, $args ) = @_;

    my $process;
        # Prozess starten und PID ermitteln
        my $ok = Win32::Process::Create( $process,
                                         $cmd,
                                         $args,
                                         0,
                                         DETACHED_PROCESS,
                                         '.'
                                       );
        my $rc = ( $ok == 0 ) ? $ok : $process->GetProcessID();
        return( $rc );
      }  # start_prog()