unix/linux 给fork()出的子进程改名、重命名

问题描述:

在一个进程中,负责监听数据,然后派发给fork出来的子进程处理,系统需要为了显示、及后面kill时可以只杀对应子进程(一开始没对子进程id进行保存,也不想这么做),要对fork出来的进程重新命名。
案例:
父进程:AbmServer -HB -f1
子进程1:AbmServerSub -HB -l1
子进程2:AbmServerSub -HB -l2
子进程3:AbmServerSub -HB -l3
要在fork之后得到以上的效果。

解决:

方法有两种:
1、修改main函数的参数argv;
在父进程启动时备份一份这个参数(指针备份,还是指向运行参数地址,后面改变才会生效),然后再fork中对这个参数直接重名即可。
2、借助函数prctl
进程重命名代码:

prctl(PR_SET_NAME, “process_name”, NULL, NULL, NULL);

第一个参数是操作类型,指定PR_SET_NAME,即设置进程名

第二个参数是进程名字符串,长度至多16字节.

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unix/Linux系统编程是指使用C语言编写程序,能够调用操作系统提供的系统调用和库函数来完成系统级任务的程序设计过程。Unix/Linux系统编程的目的是编写高效、可靠、安全、移植性好的应用程序或系统程序。 Unix/Linux系统编程的核心代码包括使用系统调用,文件操作(读写文件、目录操作等),进程控制(fork、exec等),信号处理,网络编程等。 在Unix/Linux中,系统调用是与内核进行通讯的标准方式。程序中使用系统调用来请求内核完成某个任务。例如,open()系统调用用于打开一个文件,并返回文件描述符。read()和write()系统调用用于读写文件。 文件操作是Unix/Linux系统编程中的一个要部分。文件操作包括打开文件、读写文件、删除文件、命名文件等操作。另外还有目录操作,如创建目录、删除目录、遍历目录等。 进程控制是Unix/Linux系统编程中最为复杂的部分之一。进程控制包括创建新进程、执行新进程、等待进程结束、发送信号给进程等等。其中最常见的系统调用是fork()和exec()。fork()用于创建新进程,而在创建新进程之后,exec()则用于在新进程中执行新的程序。 信号处理是Unix/Linux系统编程中的一个要概念。信号是由系统发的一个异步事件,可以从进程内部或外部发进程可以对信号进行相应操作。常见的信号包括SIGINT(Ctrl+C中断信号)、SIGTERM(终止进程信号)和SIGKILL(强制终止进程信号)。 网络编程是Unix/Linux系统编程中的另一个要部分。Unix/Linux提供了许多网络编程API,例如socket()、bind()、listen()和accept()等。使用这些API可以编写服务器端和客户端程序,进行网络通信。 总之,Unix/Linux系统编程涉及到许多要的概念和操作,涉及到操作系统底层的各种操作。因此,需要开发人员有扎实的C编程能力、熟悉Unix/Linux系统调用和库函数、了解进程控制和信号处理的概念、熟悉网络编程API以及充分了解操作系统内部的机制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值