Rah*_* KP 0 c operating-system fork
如何~fork()函数调用不同然后简单的fork()..我已经尝试了下面的代码..在这个偶然的孩子正在执行父节的代码.
main()
{
pid_t pid = ~fork();
int a = 2;
int *ptr = (int*)malloc(sizeof(int));
*ptr = 2;
if(pid == 0)
{
a = a + 3;
*ptr = *ptr + 2;
printf("value at a and ptr in child process : %d and %d\n" , a , *ptr);
printf("address a and ptr in child process : %p and %p\n" , &a , ptr);
}
else
{
printf("value at a and ptr in parent process : %d and %d\n" , a , *ptr);
printf("address a and ptr in parent process : %p and %p\n" , &a , ptr);
}
}
Run Code Online (Sandbox Code Playgroud)
pid_t pid = ~fork();
Run Code Online (Sandbox Code Playgroud)
是相同的
pid_t temporary = fork();
pid_t pid = ~temporary;
Run Code Online (Sandbox Code Playgroud)
你只是使用按位非运算符,而不是另一个函数.请注意,这实际上会使fork的返回无用,因为子将获得~0 == 0xff
(或另一个非零值),而父将获得~child_id
哪个,如果child_id
不是MAX_PID
,也是非零.
这就是孩子和父母执行给定部分的原因.
也可以看看: