prctl系统调用允许进程对自身的某些属性进行操作。 pr_set_name选项用于更改进程的名称,这在调试和监控系统中非常有用,可以帮助用户更清晰地识别和管理进程。名称长度的限制: 在Linux内核中,pr_set_name对于进程名称的长度有一个限制。这个限制通常与内核中的TASK_COMM_LEN宏定义有关,该宏定义了任务名称(即进程名称...
#include <sys/prctl.h> #include <stdio.h> #include <string.h> int main() { char new_name[16] = "new_process_name"; // 使用prctl系统调用设置进程的名称 if (prctl(PR_SET_NAME, new_name) == -1) { perror("prctl error"); return 1; } // 打印新的进程名称 char name[16]; if ...
"my_process",0,0,0);// 当父进程终止时,发送 SIGKILL 信号给当前进程prctl(PR_SET_PDEATHSIG,SIGKILL);// 打印进程名称charname[16];prctl(PR_GET_NAME,name,0,0,0);printf("Process name: %s\n",name);while(1){sleep(1);// 模拟进程运行}return0;}...
PR_SET_NAME:设置进程的名称。 PR_GET_NAME:获取进程的名称。 PR_SET_PDEATHSIG:设置父进程终止时向子进程发送的信号。 PR_GET_PDEATHSIG:获取父进程终止时向子进程发送的信号。 PR_SET_SECCOMP:启用或禁用 seccomp 沙箱。 PR_GET_SECCOMP:获取 seccomp 沙箱的状态。 prctl系统调用的其他参数取决于所选取的opt...
prctl(PR_SET_NAME, “process_name”, NULL, NULL, NULL); 1. 第一个参数是操作类型,指定PR_SET_NAME,即设置进程名 第二个参数是进程名字符串,长度至多16字节 三、下面是参考: int prctl(int option,unsigned longarg2,unsigned long arg3,unsigned long arg4,unsigned long arg5) ...
1) 改变进程名字 PR_SET_NAME 主要实现其实就是2行代码: int main(int argc, char *argv[]) { char *you_process_new_name = "you_process_new_name"; (void)strcpy(argv[0], your_process_new_name); prctl(PR_SET_NAME, you_process_new_name) ...
PR_SET_NAME:用于更改进程的名称。 PR_GET_NAME:用于获取进程的名称。 PR_SET_MM:用于管理进程的内存映射。 PR_SET_PDEATHSIG:用于设置父进程死亡时发送给子进程的信号。 可执行文件名的分类: 可执行文件名通常可以分为两类: 可执行程序的真实文件名,即文件系统上的实际文件名。
PR_SET_PDEATHSIG :arg2作为处理器信号pdeath被输入,正如其名,如果父进程不能再用,进程接受这个信号。 PR_GET_DUMPABLE :返回处理器标志dumpable; PR_SET_DUMPABLE :arg2作为处理器标志dumpable被输入。 PR_GET_NAME :返回调用进程的进程名字给参数arg2; (Since Linux2.6.9) ...
prctl(PR_SET_NAME, new_name); getchar(); return 0; } 当新名称长度大于16时就会截断,上面的新名字截断后是abcdefghijklmno。这对于我们来说是有缺陷的。而且通过ps -aux 查看,进程名称并没有改变,改变的只是/prco/$(PID)/stat和 /prco/$(PID)/status的值,而/prco/$(PID)/cmdline并没有改变。这...
prctl是Linux内核提供的一个系统调用,可以用于设置和获取进程的控制信息。利用prctl可以实现一些进程隔离的功能,例如设置进程的名称空间、资源限制等。 以下是一些利用prctl实现进程隔离的方法: 设置进程的名称空间:可以使用prctl设置进程的名称空间,例如通过PR_SET_NAME标志可以设置进程的名称。这样可以使得不同进程在名称空...