首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么getpid()返回pid_t而不是int?

为什么getpid()返回pid_t而不是int?
EN

Stack Overflow用户
提问于 2011-09-11 22:25:43
回答 3查看 58.7K关注 0票数 53

getpid() returning a value of type pid_t而不是unsigned int这样的调用背后的逻辑是什么?或者是int?这有什么帮助呢?

我猜这跟可移植性有关?保证在可能具有不同大小的int的不同平台上的pid_t是相同的大小。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-11 22:30:48

我认为恰恰相反:使程序可以跨平台移植,而不管PID是16位还是32位(甚至更长)。

票数 45
EN

Stack Overflow用户

发布于 2011-09-11 22:30:43

在不同的平台和操作系统上,不同的类型(例如pid_t)在32位计算机上可能是32位(无符号整型),在64位计算机上可能是64位(无符号长整型)。或者,出于某些其他原因,操作系统可能会选择不同的大小。此外,在读取代码时,它清楚地表明该变量表示一个“对象”,而不仅仅是一个任意数字。

票数 9
EN

Stack Overflow用户

发布于 2016-07-16 08:39:10

程序中的每个进程都有一个特定的进程ID。通过调用pid,我们知道了分配给当前process.Knowing的ID。当我们使用fork()时,pid非常重要,因为它会返回子拷贝和父拷贝的0!=0值。两个视频都有明确的解释:video#1 Video#2

举个例子:假设我们有下面的c程序:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>


int main (int argc, char *argv[])
{

  printf("I am %d\n", (int) getpid());
  pid_t pid = fork();
  printf("fork returned: %d\n", (int) pid);
  if(pid<0){
    perror("fork failed");
  }
  if (pid==0){
    printf("This is a child with pid %d\n",(int) getpid());
  }else if(pid >0){
    printf("This is a parent with pid %d\n",(int)getpid());
  }

  return 0;
}

如果您运行它,您将获得子级的0和父级的非zero/greater than zero

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

https://stackoverflow.com/questions/7378854

复制
相关文章

相似问题

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