像getpid()
returning a value of type pid_t
而不是unsigned int
这样的调用背后的逻辑是什么?或者是int
?这有什么帮助呢?
我猜这跟可移植性有关?保证在可能具有不同大小的int
的不同平台上的pid_t
是相同的大小。
发布于 2011-09-11 22:30:48
我认为恰恰相反:使程序可以跨平台移植,而不管PID是16位还是32位(甚至更长)。
发布于 2011-09-11 22:30:43
在不同的平台和操作系统上,不同的类型(例如pid_t)在32位计算机上可能是32位(无符号整型),在64位计算机上可能是64位(无符号长整型)。或者,出于某些其他原因,操作系统可能会选择不同的大小。此外,在读取代码时,它清楚地表明该变量表示一个“对象”,而不仅仅是一个任意数字。
发布于 2016-07-16 08:39:10
程序中的每个进程都有一个特定的进程ID。通过调用pid,我们知道了分配给当前process.Knowing的ID。当我们使用fork()
时,pid非常重要,因为它会返回子拷贝和父拷贝的0
和!=0
值。两个视频都有明确的解释:video#1 Video#2
举个例子:假设我们有下面的c程序:
#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
。
https://stackoverflow.com/questions/7378854
复制相似问题