UNIX(或 LINUX)中的退出和等待函数
exit and wait function in UNIX (or LINUX)
我正在编写一个模拟基于 unix 的操作系统的程序,我有一些问题:
- 来自unix.org
The wait() function will suspend execution of the calling thread
until status information for one of its terminated child processes is available, or until delivery of a signal whose action is either to execute a signal-catching function or to terminate the process
Let's imagine there is process A with two child processes B and C. If B and C call the exit function, and then A calls the wait function, which exit status will be retrieved? The one from B or the one from C? Which first and why?
2.When 进程处于等待状态,它不会执行其代码,直到例如其中一个已终止子进程的状态信息可用,对吗?
所以它不能在等待时调用 fork 函数,对吗?
3.Are对于在 UNIX 中何时可以正常终止进程有什么限制吗?
3.a。用户是否有权终止根进程? (随意所有根进程?)
wait()
returns 退出的任何子进程的 PID。如果有两个退出,则必须调用 wait()
两次并检查返回的 PID。你不应该依赖订单。
- 正确,整个目的
wait()
(没有 WNOHANG
选项)是阻止。所以你在等待过程中除了处理信号外不能做任何其他事情。
- 我不确定你在这里的确切意思,但我怀疑答案主要是 "no."
- 用户无法终止根进程(至少在没有特殊配置的情况下不能)。用户也不能终止其他用户拥有的进程。
不确定先报B还是C。
当进程处于wait()
时,它不能做任何事情(在单线程进程中)。
大部分没有限制。有不可中断的系统调用,但系统尽量避免让进程挂在里面。
否;用户可以杀死自己的进程。用户 root
可以杀死其他人的进程(一般情况下);但是没有其他人可以杀死 root
的进程。
我正在编写一个模拟基于 unix 的操作系统的程序,我有一些问题:
- 来自unix.org
The wait() function will suspend execution of the calling thread until status information for one of its terminated child processes is available, or until delivery of a signal whose action is either to execute a signal-catching function or to terminate the process
2.When 进程处于等待状态,它不会执行其代码,直到例如其中一个已终止子进程的状态信息可用,对吗? 所以它不能在等待时调用 fork 函数,对吗?
3.Are对于在 UNIX 中何时可以正常终止进程有什么限制吗?
3.a。用户是否有权终止根进程? (随意所有根进程?)
wait()
returns 退出的任何子进程的 PID。如果有两个退出,则必须调用wait()
两次并检查返回的 PID。你不应该依赖订单。- 正确,整个目的
wait()
(没有WNOHANG
选项)是阻止。所以你在等待过程中除了处理信号外不能做任何其他事情。 - 我不确定你在这里的确切意思,但我怀疑答案主要是 "no."
- 用户无法终止根进程(至少在没有特殊配置的情况下不能)。用户也不能终止其他用户拥有的进程。
不确定先报B还是C。
当进程处于
wait()
时,它不能做任何事情(在单线程进程中)。大部分没有限制。有不可中断的系统调用,但系统尽量避免让进程挂在里面。
否;用户可以杀死自己的进程。用户
root
可以杀死其他人的进程(一般情况下);但是没有其他人可以杀死root
的进程。