Linux C更改进程相关信息,Linux – 如何在C中更改分叉进程的信息

标题可能听起来有点奇怪,ps aux我看到了这个:

root 20953 0.0 0.0 9528 1280 ? Ss Apr28 0:07 sendmail: accepting connections

“接受连接”就像是sendmail进程的标题.它不是一个参数,因为cat / proc / 20953 / cmdline返回sendmail:接受连接(空格而不是0x00):

# cat /proc/20953/cmdline |hexdump -C

00000000 73 65 6e 64 6d 61 69 6c 3a 20 61 63 63 65 70 74 |sendmail: accept|

00000010 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 |ing connections|

0000001f

/ proc fs中的参数用空字节分隔:

# cat /proc/26511/cmdline |hexdump -C

00000000 2f 62 69 6e 2f 62 61 73 68 00 2f 77 65 62 72 6f |/bin/bash./webro|

00000010 6f 74 2f 70 72 6f 72 61 69 6c 2f 73 63 72 69 70 |ot/prorail/scrip|

00000020 74 73 2f 73 79 6e 63 6c 6f 6f 70 2e 73 68 00 |ts/syncloop.sh.|

0000002f

所以,当我在C中执行fork()时,如何设置这个进程信息,这样我才能识别出哪个进程是什么?

解决方法:

sendmail有多种方式,具体取决于system.see中sendmail / conf.c中的setproctitle:

#define SPT_NONE 0 /* don't use it at all */

#define SPT_REUSEARGV 1 /* cover argv with title information */

#define SPT_BUILTIN 2 /* use libc builtin */

#define SPT_PSTAT 3 /* use pstat(PSTAT_SETCMD, ...) */

#define SPT_PSSTRINGS 4 /* use PS_STRINGS->... */

#define SPT_SYSMIPS 5 /* use sysmips() supported by NEWS-OS 6 */

#define SPT_SCO 6 /* write kernel u. area */

#define SPT_CHANGEARGV 7 /* write our own strings into argv[] */

有关详细信息,请参阅conf.c中的setproctitle例程.

标签:c-3,linux,gcc,fork

来源: https://codeday.me/bug/20190521/1148627.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值