Wie beendet man einen Prozess, der execv aufruft?

Wie beendet man einen Prozess, der execv aufruft?

Ein Prozess, derexecvstirbt nicht, wie es scheint, trotz Absicht.

Beispiel übernommen vonHier:

#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");
   }
}

Wenn ich diese ausführbare Datei aufrufe foo, wie kann ich foo nach dem Start beenden? Meine einzige Möglichkeit scheint darin zu bestehen, die ID des übergeordneten Prozesses zu erfassen und diesen 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.

verwandte Informationen