Dans linux, je peux utiliser lsof -i
comme dans la fonction suivante:En python, existe-t-il une méthode multi-plateforme pour déterminer quel processus écoute un port donné?
def FindProcessUsingPort(portnum):
import os
fp = os.popen("lsof -i :%s" % portnum)
lines = fp.readlines()
fp.close()
pid = None
if len(lines) >= 2:
pid = int(lines[1].split()[1])
return pid
est-il un moyen multi-plateforme pour comprendre cela? Comme référence pertinente, une fois que je connais l'identificateur de processus, la bibliothèque psutil est très agréable et me permet de déterminer toutes sortes d'informations de processus utiles pour cela de manière multiplateforme. Je ne peux pas obtenir la première partie pour travailler (trouver le pid) multi-plateforme pour le moment.
Si pas familier avec le commutateur lsof -i
, la sortie ressemble ci-dessous (après le lancement d'un processus de python qui ouvre une socket TCP écoute sur le port 1234):
$ lsof -i :1234 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME python 22380 russ 15u IPv4 4015476 0t0 TCP *:1234 (LISTEN)
voir: http://stackoverflow.com/questions/ 15708/lsof-equivalent-for-windows. Ils parlent de fichiers, mais il est peu probable que cela soit plus facile pour les ports. – tokland
@tokland: merci. Mais je cherche un moyen qui ne nécessite pas l'installation de paquets non-python spécifiques à l'os. Je suis d'accord qu'il pourrait être improbable sur Windows, mais je devais encore demander. +1 de toute façon pour un lien vers quelque chose qui fait référence aux sysinternals ... quand dans Windows ces outils sont indispensables. – Russ