Question

Sous Linux / NPTL , les threads sont créés en tant que processus.

Je peux voir que certains de mes processus ont une étrange cmdline:

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

Avez-vous une idée de la façon dont je pourrais le faire pour chaque fil de mon processus? Cela serait très utile pour le débogage.

/ moi enquête actuellement dans une source HAL

merci

Était-ce utile?

La solution

Si vous voulez le faire de manière portable, quelque chose qui fonctionnera sur plusieurs variantes d'Unix, il y a très peu d'options disponibles.

Ce que vous devez faire, c'est que votre processus appelant doit appeler exec avec l'argument argv [0] pointant vers le nom que vous souhaitez voir dans la sortie du processus et le nom du fichier pointant vers l'exécutable réel.

Vous pouvez essayer ce comportement à partir du shell en utilisant:

exec -a "This is my cute name" bash

Cela remplacera le processus bash actuel par un processus "Ceci est mon joli nom" .

Pour cela, vous pouvez consulter le code source de sendmail ou tout autre logiciel largement porté et rechercher toutes les variations nécessaires entre les systèmes d'exploitation pour prendre en charge cette fonctionnalité. .

Certains systèmes d'exploitation ont une API setproctitle (3) , d'autres vous permettent de remplacer le contenu de argv [0] et d'afficher ce résultat.

Autres conseils

argv pointe sur des chaînes accessibles en écriture. Il suffit de leur écrire:

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

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

Bah .. le code n’est pas très agréable, le truc est de réutiliser le pointeur environ (ici argv_buffer):

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

Une meilleure idée?

Est-ce que cela fonctionne pour différents threads?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top