【发布时间】:2021-12-25 00:18:27
【问题描述】:
什么情况下会执行条件代码?
ret = fork ();
if (ret == getpid ()) {
/ * CODE * /
}```
Only the child process or never?
【问题讨论】:
-
看起来像家庭作业。提示:
fork为子进程返回什么?getpid()返回什么? -
fork永远不会返回您所在进程的 pid。那将毫无用处。见fork() returns 0, but the child process getpid()!=0. Why? -
我知道 fork 是如何工作的,但总的来说我不知道 getpid() 返回的值是否取决于你在哪里使用它。在子进程中,您可以使用 getppid() 获取父进程的 pid,但我不知道这里返回的是子进程还是父进程的 pid
-
@Rojina
getpid总是返回你所在进程的 pid。总是。它的行为不会因您调用它的方式而有所不同,例如基于您是否只是调用fork。为什么会呢?怎么可能? (无论如何,所有进程——除了 pid 1——都是子进程,这是因为有人,他们的父级,称为fork。同样,请阅读this question 及其答案。)跨度> -
好的,谢谢,那么答案永远不会在子进程中 ret 是 0 并且 getpid 返回子进程的 pid 不是 0 而在父进程中 ret 是子进程getpid 返回父进程的 pid
标签: c process operating-system signals fork