7
votes

Linux Obtenir le nom de processus de PID dans le noyau

salut J'ai utilisé SYS_GETPID () à partir du noyau pour obtenir un identifiant de processus Comment puis-je trouver le nom de processus de la structure du noyau? Existe-t-il dans le noyau ??

Merci beaucoup


0 commentaires

4 Réponses :


15
votes

struct task_tructeur contient un membre appelé COMM , il contient le nom Nom exécutable à l'exclusion du chemin .

Obtenez Macro actuelle de ce fichier Vous obtiendrez le nom du programme qui a lancé le processus actuel (comme dans INSMOD / MODPROBE).

Utiliser ci-dessus Info que vous pouvez utiliser obtenir le nom Info.


4 commentaires

La comm est un tampon de tak_comm_length qui est un tampon de 16 octets. Si le nom exécutable est supérieur à 16 octets, existe-t-il encore un moyen (à part Filp_open of Procfs) pour obtenir le nom de la tâche complète?


Courant-> Comm Contient le nom du thil. Qui peut être changé par pthread_setname_np ou syscall correspondant.


Les liens sur cette réponse sont maintenant morts


Je ne peux pas éditer la réponse car la file d'attente suggérées est pleine, mais je remplacerais les liens morts LXR avec ceux de bootrin: Elixir.bootlin.com/linux/v5.4/source/include/linux/sched.h#l 624



1
votes

Pas sûr, mais Find_Task_by_pid_ns pourrait être utile .


0 commentaires

0
votes

Vous pouvez consulter les fichiers spéciaux dans / proc / /

Par exemple, / proc / / exe est un symbolique pointant sur le binaire réel.

/ proc / / cmdline est une liste délimitée de la ligne de commande. Le premier mot est donc le nom du processus.


2 commentaires

Je crois que Malesh N. veut pouvoir le faire depuis le code du noyau.


Ceci peut être atteint de l'espace de noyau à l'aide de filp_open , @ craig65535



1
votes

Mon module de noyau se charge avec "modprobe -v My_Module My_Module - non supporté -O Quelques données" et j'extrise le paramètre "Certains données". Le code suivant m'a donné la ligne de commande entière, et voici comment j'ai analysé le paramètre d'intérêt: xxx

"cible" contient la chaîne après le paramètre -O. Vous pouvez compresser cela quelque peu - l'appelant (dans ce cas, ModProbe) sera la première chaîne de mm-> arg_start - en fonction de vos besoins.


0 commentaires