Wie kann ich einen Prozess beenden, der execv aufruft?


1

Ein Prozess, der anruft, execvstirbt nicht durch Design, wie es aussieht.

Beispiel von hier ausgeliehen :

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>

main() {
   pid_t pid;
   char *const parmList[] = {"/bin/ls", "-l", "/u/userid/dirname", NULL};

   if ((pid = fork()) == -1)
      perror("fork error");
   else if (pid == 0) {
      execv("/bin/ls", parmList);
      printf("Return not expected. Must be an execv error.n");
   }
}

fooWie kann ich foo töten, wenn ich die ausführbare Datei nenne, nachdem sie gestartet wurde? Meine einzige Option scheint die übergeordnete Prozess-ID zu erfassen und diese dann zu beenden.

foo &
echo $! > /path/to/foo_pid
kill /path/to/foo_pid

Aber ich habe keine Möglichkeit, die PID des übergeordneten Prozesses zu erfassen.


Warum können Sie den Prozess nicht mit seiner PID beenden?
David Schwartz

Haben Sie es kill -9mit der Prozess-PID versucht ?
BillP3rd
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.