Pregunta

En Linux / NPTL , los hilos se crean como algún tipo de proceso.

Puedo ver que algunos de mis procesos tienen un cmdline extraño:

cat /proc/5590/cmdline 
hald-addon-storage: polling /dev/scd0 (every 2 sec)

¿Tienes una idea de cómo podría hacer eso para cada hilo de mi proceso? Eso sería muy útil para la depuración.

/ yo ahora investigando en la fuente HAL

gracias

¿Fue útil?

Solución

Si desea hacer esto de manera portátil, algo que funcionará en múltiples variaciones de Unix, hay muy pocas opciones disponibles.

Lo que tiene que hacer es que su proceso de llamada debe llamar a exec con el argumento argv [0] apuntando al nombre que le gustaría ver en la salida del proceso, y el nombre del archivo apuntando a el ejecutable real.

Puede probar este comportamiento desde el shell utilizando:

exec -a "This is my cute name" bash

Eso reemplazará el proceso de bash actual con uno llamado " Este es mi lindo nombre " .

Para hacer esto en C, puede mirar el código fuente de sendmail o cualquier otra pieza de software que haya sido portada extensamente y encontrar todas las variaciones que se necesitan en los sistemas operativos para soportar esto .

Algunos sistemas operativos tienen una API setproctitle (3) , algunos otros le permiten anular el contenido de argv [0] y mostrar ese resultado.

Otros consejos

argv apunta a cadenas de escritura. Solo escribe cosas para ellos:

#include <string.h>
#include <unistd.h>

int
main(int argc, char** argv)
{
    strcpy(argv[0], "Hello, world!");
    sleep(10);
    return 0;
}

Bah ... el código no es tan bueno, el truco es reutilizar el puntero de entorno (aquí argv_buffer):

memset (argv_buffer[0] + len, 0, argv_size - len);
argv_buffer[1] = NULL;

¿Alguna idea mejor?

¿Está funcionando para diferentes hilos?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top