Actualmente estoy tratando de cambiar el nombre del proceso de un proceso para poder leer más fácilmente con htop, top, .... Quiero LD_PRELOAD este código en otro proceso para que una variable de entorno le cambie el nombre.
Encontré muchas cosas en Internet, pero nada funciona:
prctl(PR_SET_NAME, "Test");Esto no funciona porque htop no respeta el nombre.
Nginx setproctitle ( Link ) no funciona tan bien, porque elimina los parámetros (que son necesarios para el proceso).
Probé todo lo que encontré y ahora me quedé sin ideas.
¿Es esto posible en Linux? ¿Y cómo?
Simplemente ejecute su programa por script de shell o su programa a través de exec y pase el nombre deseado como argv[0] :
#/bin/bash exec -a fancy_name a.out ...o C/C++:
execl( "./a.out", "fancy_name", ... );#include <stdio.h> #include <string.h> #include <unistd.h> #define NEW_NAME "hello_world" int main(int argc, char **argv) { if(strcmp(argv[0], NEW_NAME)) { argv[0] = NEW_NAME; execv("/proc/self/exe", argv); fputs("exec failed", stderr); return 1; } while(1) // so it goes to the top ; }