如何在UNIX中命名的相应进程中命名进程和插入值

时间:2016-10-03 16:52:32

标签: c linux

我需要使用fork创建进程,并根据它们的名称/标签为它们分配相应的值。然后使用C语言中的pipes()传输值。我的问题是,有没有办法命名流程?

1 个答案:

答案 0 :(得分:0)

每个流程都有一个唯一的标识符PID。在Linux(以及所有POSIXy和Unix系统)中,这些标识符是正整数,其中1是特殊的,init

(通过唯一,上面,我的意思是每个活动(运行)进程和僵尸进程都有自己的PID,并且没有两个共享相同的PID。但是,旧的PID最终会被重用,有时候在几秒钟内;它取决于系统。不要指望死进程的PID保持未使用!)

当您分叉子进程时,fork()会在子进程中返回(pid_t)0,并在父进程中返回子进程PID。通过存储您在数组中创建的子进程的PID,父进程可以告诉哪个子进程是哪个。

每个流程始终可以调用getpid()来查找自己的PID。

进程还可以调用getppid()来查找其父进程的PID(调用fork()创建此进程的进程的PID)。但是,如果真正的父亲已经死亡/退出,getppid()将返回1.(这也是我们有一个init进程的原因的一半.init进程只负责两件事:作为孤儿的父母进程,并在它们死亡时收获它们;并在操作系统启动时启动所有其他进程。)

getpid()getppid()都不会失败;您可以依赖它们始终返回相应的PID。

总的来说,这种设计在实践中非常普遍。使用多个进程来完成工作的所有守护进程基本上都是这样做的。这意味着这项练习在实践中也很重要。