L'obtention de l'id de processus d'un processus en cours sans unistd.h
Je travaille sur un algorithme de détection de blocage et je n'ai que le noyau au niveau des bibliothèques, c'est à dire #include <linux/somelibrary>
et rien d'autre. Existe-il au niveau du noyau des installations qui va me permettre d'obtenir le pid du processus courant similaire à getpid()
de unistd.h
?
OriginalL'auteur | 2009-02-09
Vous devez vous connecter pour publier un commentaire.
J'ai fait quelques rapides recherches et j'ai trouvé la réponse. Merci beaucoup pour votre direction. Le quick code que j'ai utilisé était:
Merci encore!
Notez que, bien que cela pourrait avoir été le cas en 2009, avec moderne Linux PID espaces de noms, la réponse peut être plus complexe.
OriginalL'auteur
Cette question a peu de sens.
Écrivez-vous sur le noyau de code? Dans ce cas, vous pouvez obtenir le pid de la tâche en cours en utilisant le "courant" macro qui pointe à la tâche en cours task struct (qui contient un membre avec le pid). Qui ne fonctionne que si votre noyau le code est exécuté dans un contexte où une "tâche en cours" a du sens (c'est à dire pas une interruption, tasklet etc).
Si vous écrivez le code en espace utilisateur, il devrait y avoir aucune raison que vous ne pouvez pas appeler getpid, qui est un appel de la bibliothèque de la bibliothèque C définie dans unistd.h (ou quelque chose qu'il comprend), ce qui rend le système d'appel. S'il y a une raison, veuillez expliquer.
Faire un appel système Linux n'est pas particulièrement difficile, mais implique une architecture de code spécifiques que vous ne voulez pas écrire.
OriginalL'auteur MarkR