corriendo - ver procesos en ejecucion linux




Cambiar el nombre del proceso en Linux (2)

Creo que esto debería funcionar, para ilustrar el principio ...

#include <stdio.h>

int main(int argc, char *argv[]) {
  argv[0][0] = 65;
  sleep(10);
}

cambiará el nombre y colocará una "A" en lugar de la primera letra. CtrlZ para pausar, luego ejecuta ps para ver el nombre cambiado. No tengo ni idea, pero parece algo peligroso, ya que algunas cosas pueden depender de argv[0] .

Además, traté de reemplazar el puntero a otra cadena; sin cigarro Así que esto solo funcionaría con strcpy y cadenas más cortas o iguales que el nombre original.

Puede o no puede haber una mejor forma de hacerlo. No lo sé.

EDITAR: solución no literal: si está bifurcando, conoce el PID del niño ( getpid() en el niño, resultado de fork() en el padre). Solo déjelo en algún lugar donde pueda leerlo y mate al niño por PID.

otra solución no literal: haga enlaces suaves al ejecutable con otro nombre ( ln -s a.out kill_this_a.out ), luego, cuando ln -s a.out kill_this_a.out , ln -s a.out kill_this_a.out el enlace. El nombre será el nombre del enlace.

Estoy en Linux y estoy bifurcando / ejecutando un nuevo proceso de mi aplicación C spawn. ¿Es posible cambiar también el nombre de estos nuevos procesos secundarios?

Quiero ser capaz de identificar el proceso que se inicia en caso de que algo salga mal y tengo que matarlo manualmente. Actualmente todos tienen el mismo nombre.


El ejemplo de código siguiente cambiaría el nombre del proceso a "Prueba".

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

    int main (int argc, char *argv[]) {
    char* temp = (char*) malloc (20);
    strcpy(temp, "Testing");
    temp[7] = 0;
    printf("Argv[0] --> %s\n", argv[0]);
    argv[0] = temp;
    printf("Argv[0] --> %s\n", argv[0]);    
    return 0;
    }

La salida del programa anterior es:

./a.out

Argv [0] -> ./a.out

Argv [0] -> Pruebas

El argv [0] contiene el nombre del proceso.





process