gpt4 book ai didi

c - 如何命名进程并在 UNIX 中命名的各个进程中插入值

转载 作者:行者123 更新时间:2023-11-30 21:08:12 27 4
gpt4 key购买 nike

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

最佳答案

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

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

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

每个进程都可以随时调用getpid()找出它自己的 PID 是什么。

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

getpid()getppid() 都不会失败;您可以信赖它们始终返回各自的 PID。

总体而言,这种设计在实践中极为常见。所有使用多个进程来完成工作的守护进程基本上都是这样做的。这意味着这个练习在实践中也有意义。

关于c - 如何命名进程并在 UNIX 中命名的各个进程中插入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39836596/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com