~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);
}
}发布于 2012-10-08 18:34:26
pid_t pid = ~fork();等同于
pid_t temporary = fork();
pid_t pid = ~temporary;您只需使用逐位not运算符,而不是另一个函数。请注意,这实际上会使fork的返回变得无用,因为子级将获得~0 == 0xff (或另一个非零值),而父级将获得~child_id,如果child_id不是MAX_PID,也是非零值。
这就是为什么孩子和父亲都会执行给定节的原因。
另请参阅:
发布于 2012-10-08 18:35:04
~只翻转fork()返回的值的位
https://stackoverflow.com/questions/12779929
复制相似问题