cambiar de nombre a un proceso

Iniciado por snowspring, 4 Diciembre 2018, 19:47 PM

0 Miembros y 1 Visitante están viendo este tema.

snowspring

Hola buenas, estaba haciendo un pequeño programa en C en el cual a partir de un proceso padre creo un proceso hijo y muestro por pantalla el PID del padre y del hijo, además de eso quería que al ejecutarlo en segundo plano al hacer un ps el nombre del proceso hijo cambie de "padre" a "hijo". He leido que con un execl cambiando el argumento argv[0] por "hijo" debería de funcionar pero no me funciona.
Os adjunto aquí el código.
Muchas gracias!

#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>


int main(int argc, char *argv[]){
       //printf("%s\n", argv[0]);
if(strcmp(argv[0],"hijo")==0){
malo();

}else{
switch(fork()){
case -1:
perror("padre"); exit(1);
case 0:
printf("%d: Soy el hijo\n", getpid());
break;
default:
printf("%d: Soy el padre\n", getpid());


}
execl(argv[0],"hijo", NULL);
//printf("%s", argv[0]);

}
pause();
//sleep(30);

}

AlbertoBSD

Cita de: snowspring en  4 Diciembre 2018, 19:47 PM
He leido que con un execl cambiando el argumento argv[0] por "hijo" debería de funcionar pero no me funciona.


int execl(const char *path, const char *arg, ...);

The const char *arg and subsequent ellipses in the execl(), execlp(), and execle() functions can be thought of as arg0, arg1, ..., argn.

Eso solo modifica los parametros que procesa el programa llamado mediante execl. normalemnte el argv[0] es el nombre del programa, pero eso solo cambia la forma en la que el programa se ve asi mismo, para el sistema operativo el proceso va seguir teniendo el nombre original.

Si quieres cambiar el nombre del proceso listado en el PS, tienes que "rootkitear" tu sistema operativo y controlar la forma en la que el PS actual afectandi directamente la informacion  que PS esta leyendo actualmente.


Saludos



Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW