windows python subprocess通过端口查找全部pid,且多个进程占用该端口并返回结果
时间: 2023-06-08 12:05:24 浏览: 106
可以使用Python中的psutil模块来实现该功能。具体实现代码如下:
```
import psutil
def find_process_by_port(port):
pid_list = []
for conn in psutil.net_connections():
if conn.status == psutil.CONN_LISTEN and conn.laddr.port == port:
pid_list.append(conn.pid)
return pid_list
```
该函数接受一个端口号作为参数,然后遍历所有网络连接,并筛选出占用该端口的监听连接,最后返回所有占用该端口的进程pid。
如果多个进程占用该端口,该函数会返回一个pid列表。
相关问题
windows python subprocess通过端口查找全部pid并返回结果
你可以使用以下代码来查找所有使用指定端口的 PID:
```
import subprocess
port = "8080" # 指定要查找的端口号
command = 'netstat -aon | findstr :' + port + ' | findstr LISTENING' # 使用 netstat 命令查找端口
output = subprocess.check_output(command, shell=True) # 执行命令并将结果存储在 output 中
output = output.decode("utf-8") # 将 bytes 转换为 str
pid = output.split()[-1] # 提取 PID
print(pid)
```
该代码使用 `netstat` 命令查找占用指定端口的进程,并获取其 PID。注意,该代码只返回一个 PID,如果有多个进程占用该端口,则需要使用其他方法来获取所有 PID。
windows python subprocess通过端口查找pid并返回结果
您可以使用Python中的psutil模块来实现这个功能,代码如下:
```python
import psutil
# 定义函数来获取指定端口的pid
def get_pid_by_port(port):
for conn in psutil.net_connections():
if conn.status == 'LISTEN' and conn.laddr.port == port:
return conn.pid
return None
# 调用函数获取指定端口的pid
pid = get_pid_by_port(8080)
print(pid)
```
以上代码通过psutil模块中的net_connections方法来遍历当前所有网络连接,并根据端口和连接状态来寻找对应的pid。如果找到了,则返回pid,否则返回None。在这个例子中,我们查找的是端口号为8080的pid。