Geo*_*e M 33
子进程继承nice父进程在它被分叉时所持有的任何值(在您的示例中,5)。
但是,如果nice在 fork 子进程后父进程的值发生变化,则子进程不会继承新nice值。
您可以使用监控工具轻松地观察到这一点top。如果nice默认情况下未显示字段 (NI),您可以通过按f并选择来添加它I。这会将NI列添加到top显示中。
* I: NI = Nice value
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1937 root 20 0 206m 66m 45m S 6.2 1.7 11:03.67 X
Run Code Online (Sandbox Code Playgroud)
好资料来自 man 2 fork
fork() 通过复制调用进程来创建一个新进程。新进程,称为子进程,是调用进程的完全副本,称为父进程,除了以下几点:
- 子进程有自己唯一的进程 ID,并且此 PID 与任何现有进程组的 ID (setpgid(2)) 都不匹配。
- 子进程的父进程 ID 与父进程 ID 相同。
- 子进程不继承其父进程的内存锁(mlock(2)、mlockall(2))。
- 进程资源利用率 (getrusage(2)) 和 CPU 时间计数器 (times(2)) 在子进程中重置为零。
- 孩子的待处理信号集最初是空的(sigpending(2))。
- 子级不会从其父级 (semop(2)) 继承信号量调整。
- 子进程不从其父进程 (fcntl(2)) 继承记录锁。
- 子进程不继承其父进程的定时器(setitimer(2)、alarm(2)、timer_create(2))。
- 子进程不会从其父进程(aio_read(3)、aio_write(3))继承未完成的异步 I/O 操作,也不会从其父进程继承任何异步 I/O 上下文(请参阅 io_setup(2))。