首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fork()和~fork()有什么区别

fork()和~fork()有什么区别
EN

Stack Overflow用户
提问于 2012-10-08 18:32:46
回答 2查看 221关注 0票数 0

~fork()函数调用与简单的fork()有何不同..我已经尝试了以下代码..在此偶子给出了执行父节的代码。

代码语言:javascript
复制
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);
}
}
EN

回答 2

Stack Overflow用户

发布于 2012-10-08 18:34:26

代码语言:javascript
复制
pid_t pid = ~fork();

等同于

代码语言:javascript
复制
pid_t temporary = fork();
pid_t pid = ~temporary;

您只需使用逐位not运算符,而不是另一个函数。请注意,这实际上会使fork的返回变得无用,因为子级将获得~0 == 0xff (或另一个非零值),而父级将获得~child_id,如果child_id不是MAX_PID,也是非零值。

这就是为什么孩子和父亲都会执行给定节的原因。

另请参阅:

  • Wikipedia: Bitwise_operation#NOT
票数 8
EN

Stack Overflow用户

发布于 2012-10-08 18:35:04

~只翻转fork()返回的值的位

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12779929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档