https://bugzilla.kernel.org/show_bug.cgi?id=214871 --- Comment #2 from zatrazz@xxxxxxxxx --- On Sat, Oct 30, 2021 at 8:55 AM Alejandro Colomar (man-pages) < alx.manpages@xxxxxxxxx> wrote: > [CC += Glibc, Adhemerval] > > Hi Adhemerval, > > On 10/29/21 22:37, bugzilla-daemon@xxxxxxxxxxxxxxxxxxx wrote: > > https://bugzilla.kernel.org/show_bug.cgi?id=214871 > > > > Bug ID: 214871 > > Summary: Man(3) system outdated > > Product: Documentation > > Version: unspecified > > Hardware: All > > OS: Linux > > Status: NEW > > Severity: normal > > Priority: P1 > > Component: man-pages > > Assignee: documentation_man-pages@xxxxxxxxxxxxxxxxxxxx > > Reporter: mikekearney85@xxxxxxxxxxx > > Regression: No > > > > During my recent university work, I have noticed the man (3) page for > system > > (https://man7.org/linux/man-pages/man3/system.3.html) states: > > > > The system() library function uses fork(2) to create a child process that > > executes the shell command specified in command using execl(3) as > follows: > > execl("/bin/sh", "sh", "-c", command, (char *) NULL); > > > > On reading the source code for system, this caused me some confusion. > > Eventually I found a commit from 2018 > > ( > > https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=5fb7fc96350575c9adb1316833e48ca11553be49 > ), > > in which fork and exec were replaced by posix_spawn. The explains why I > could > > not aline the man page with the source code. > > > > I was about to change that line to say that it works "as if" using > fork(2) and execl(3), as POSIX says, but then, reading the page further, > it talks about many implementation details that seem to relate to when > glibc did actually use fork(2). They may be outdated now, so I think > it's better if someone from glibc that knows its current details reviews > the full page and proposes changes. > Hi Alejandro, Indeed we changed glibc to use posix_spawn on system and popen on 2.29 since to use posix_spawn (which uses clone (CLONE_VFORK | CLONE_VM)). It plays way better with Linux memory subsystem than fork() + exec() specially when such calls are used with process with large RSS. -- You may reply to this email to add a comment. You are receiving this mail because: You are watching the assignee of the bug.