Deutsch English Français Italiano |
<vgl8h1$385vs$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!weretis.net!feeder9.news.weretis.net!news.quux.org!eternal-september.org!feeder2.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Muttley@DastartdlyHQ.org Newsgroups: comp.unix.programmer Subject: Why does getppid() still return old parent pid after setsid()? Date: Fri, 8 Nov 2024 14:51:13 -0000 (UTC) Organization: A noiseless patient Spider Lines: 27 Message-ID: <vgl8h1$385vs$1@dont-email.me> Injection-Date: Fri, 08 Nov 2024 15:51:15 +0100 (CET) Injection-Info: dont-email.me; posting-host="8833238c505f801787634014ea3badaf"; logging-data="3414012"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19fHy8jfld0My10q11t5op6" Cancel-Lock: sha1:M3oXk94EMqj8gQj2fxxVvQqEJRk= Bytes: 1499 I've tried this code on both MacOS and Linux yet the child process getppid() still returns its original parent process instead of "1" for init which is what I'd expect. Isn't setsid() supposed to completely detach the child or have I misunderstood? int main() { printf("Parent pid %d\n",getpid()); switch(fork()) { case -1: perror("fork"); return 0; case 0: // child break; default: // Parent sleep(1); return 0; } setsid(); printf("Child parent = %d\n",getppid()); return 0; }