1

I am studying C and Operating system, during which i came across the system call exit() in *nix systems. I know there will be wrapper procedure call in C for each of the system call in *nix systems. In this case, exit() is the procedure call provided in the standard C library, let us consider glibc for the discussion. I have downloaded the glibc code and checked the code inside exit() it finally makes a call to _exit(). where can i find the function body of _exit()? In library glibc, would the function _exit() be making a system call exit() in case of UNIX and ExitProcess() in case of Windows, based on the operating system?

Darshan L
  • 824
  • 8
  • 30
  • Did you try checking "Termination Internals" section? Here [is the link](https://www.gnu.org/software/libc/manual/html_node/Termination-Internals.html) – Ketan Mukadam Jan 13 '18 at 13:11
  • It does not explain my question, though. I want to understand whether _exit () would call different system calls based on the operating system. exit () in case of Unix OS and ExitProcess () in case of windows? – Darshan L Jan 13 '18 at 13:35
  • 1
    The answer is yes. See this [SO answer](https://stackoverflow.com/questions/46903180/syscall-implementation-of-exit) – Ketan Mukadam Jan 13 '18 at 14:27
  • *exit () in case of Unix OS* On Solaris, [the system call may be called `exit`, but it calls `rexit()`](http://src.illumos.org/source/xref/illumos-gate/usr/src/uts/common/os/sysent.c#437) and thus shows up in dTrace as `rexit`. Unless you're actually doing *direct system calls* (and even if you use the `syscall()` **function** you are not doing actual system calls...) you're making function calls. How your code's *function* calls map to actual system calls isn't as direct as those who break `libc.so` into "functions" and "aystem calls" would lead you to believe. It's all very platform-specific – Andrew Henle Jan 13 '18 at 14:28
  • Where to check function definition for _exit ()? I don't see it under exit.c file – Darshan L Jan 14 '18 at 12:53

0 Answers0