在 Linux 上,几乎所有进程(包括服务器和守护程序)都以fork(2)(有时在标准 C 库中使用clone(2) 实现)启动,通常后跟execve(2)系统调用。该守护进程(3)库函数使用这些(和一些其他几个人)系统调用(中列出的系统调用(2) ....)
唯一的例外是一些由内核神奇地启动的进程。这些包括:
init存在于 1980 年代的 Unixes(例如 SunOS3)。AFAIK,自动启动hotplug的类似进程是最近添加的 Linux(可能是 Linux 3,或至少 2.6,另见udev)
大多数程序和进程(包括login, bash, getty, cron, atd, mysqld)都是init with fork& 的后代execve
您基本上可以忽略异常(例如hotplug),并且您可以拥有一个每个进程都是其后代的 Linux 系统init(Linux 1.x 就是这种情况)。 x 内核在上个世纪)。使用pstree(1) 查看进程树。
阅读关于Linux 启动过程和从 PowerUp 到 Bash Prompt 的 wikipage(可能有点过时,但大部分仍然是正确的)。
setuid是一种与权限相关的巧妙机制(另请参阅setreuid(2)、credentials(7)、capabilities(7)、namespaces(7))。
我建议首先阅读Advanced Linux Programming。在那本书之后出现了一些功能或系统调用(例如signalfd(2)、inotify(7)、epoll(7) ....)。
| 归档时间: |
|
| 查看次数: |
313 次 |
| 最近记录: |