Also, there are nasty edge cases around things like what exactly happens to forked file descriptors that require a lot of baggage to implement in a way that's both fully backwards compatible and still able to do everything people need. ![]() continue working with the calling process' address space and resources), and jump through complicated hoops to basically "withhold" doing most of the actual fork() work until it has confirmed that this is a "real" fork attempt and not just prelude to an exec(). Basically, modern POSIX OSes like Linux have code to carefully detect whether the program immediately does an exec after the fork or whether it actually makes use of the full features of fork (i.e. ![]() It requires a ton of effort to implement effectively, because a lot has changed in CPU architectures since it was designed and what was a negligible performance penalty back then is no longer negligible today.
0 Comments
Leave a Reply. |