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 ?? p>
Merci beaucoup p>
4 Réponses :
struct task_tructeur contient un membre appelé COMM , il contient le nom Obtenez Macro actuelle de ce fichier Vous obtiendrez le nom du programme qui a lancé le processus actuel (comme dans INSMOD / MODPROBE). P>
Utiliser ci-dessus Info que vous pouvez utiliser obtenir le nom Info. P> Nom exécutable à l'exclusion du chemin code>. p>
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 Code> 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
Vous pouvez consulter les fichiers spéciaux dans Par exemple, / proc /
/ proc /
/ proc /
Je crois que Malesh N. veut pouvoir le faire depuis le code du noyau.
Ceci peut i> être atteint de l'espace de noyau à l'aide de filp_open code>, @ craig65535
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: "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. P> P>