J'ai besoin de savoir si un processus avec un PID donné a ouvert un port sans utiliser de commandes externes. Je dois alors utiliser le /proc
système de fichiers. Je peux lire le /proc/$PID/net/tcp
fichier par exemple et obtenir des informations sur les ports TCP ouverts par le processus. Cependant, sur un processus multithread, le /proc/$PID/task/$TID
répertoire contient également un net/tcp
fichier. Ma question est :
dois-je parcourir tous les net/tcp
fichiers de threads , ou le port ouvert par les threads sera-t-il écrit dans le net/tcp
fichier de processus .
la source
fd
répertoire de chaque thread? Ou le/proc/pid/fd
répertoire "hérite-t-il" des/proc/pid/task/tid/fd
répertoires?fd
répertoire d'un thread ne fait que répéter lefd
répertoire du processus.S'il vous plaît
et vous obtiendrez une sortie comme celle-ci
La deuxième colonne (adresse_locale) de la sortie affiche le port en hexadécimal. Utilisez votre calculatrice de programmation pour convertir le code hexadécimal en décimal.
Par exemple ici, le port: 01BB (en hexadécimal) est égal à 433 (en décimal) qui est le port HTTPS par défaut.
la source