亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

python - subprocess.Popen執行命令后stdout.read()到的信息為空,是路由原因還是自身程序問題?

瀏覽:82日期:2022-06-29 16:58:15

問題描述

下面的代碼是我日常用來監測網絡聯通性的,昨天之前(截止到前天晚上)都可以獲取到返回的信息,而昨天開始stdout.read()讀到的內容就是空。 我直接在CMD窗口ping主機返回的信息是聯通的,用call方法取到的返回信息也正常。請大神幫忙解惑

cmd=’ping 10.9.88.69’P=subpross.Popen(cmd,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)reshult=p.stdout.read()

問題解答

回答1:

你這個命令ping 10.9.88.69 在linux環境下是不會停止的,而且subprocess.Popen默認是等待命令結束才返回結果,是阻塞的

可以這樣

1.讓ping早點結束 加多個以參數 -c 指定下ping的次數

cmd=’ping 10.9.88.69 -c 3’P=subpross.Popen(cmd,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)reshult=p.stdout.read()

2.把阻塞變為不阻塞

import osimport timeimport fcntlimport subprocesscmd = ’ping 10.9.88.69’p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,shell=True)fd = p.stdout.fileno()fl = fcntl.fcntl(fd, fcntl.F_GETFL)fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NONBLOCK)while True: try:line = p.stdout.readline()print(line) except:time.sleep(1)

標簽: Python 編程
主站蜘蛛池模板: 狠狠久久亚洲欧美专区 | 婷婷综合色伊人阁 | 欧美日本一道高清二区三区 | 日本黄色片免费观看 | 日本一级特黄啪啪片 | 在线看一区二区 | 国产chinese中国hdxxxx | 在线欧美日韩 | 免费性视频 | 日韩生活片 | 在线入口 | 亚洲国产成人久久精品图片 | 97精品国产高清自在线看超 | 亚洲自拍偷拍视频 | 欧美精品一区二区久久 | 午夜网站在线播放 | 一级毛片在线直接观看 | 国产精品久久久久久久 | 日本一级特黄特色大片免费视频 | 亚洲综合在线观看一区www | 国产精品自线在线播放 | 久久一区二区明星换脸 | 久久97超级碰碰碰 | 18年大片免费在线观看 | 曰韩一级毛片 | 伊人久久久综在合线久久在播 | 日本aaaa特级毛片 | 国产日韩精品一区二区在线观看播放 | 国产精品久久国产精品99 | 国产夜色视频 | 欧美黄色特级视频 | 性精品| 午夜精品久久久久久99热 | www.精品| 找国产毛片看 | 成人国产精品免费网站 | 人妖xxxx | 欧美一级特毛片 | 综合久久综合 | 国产免费高清福利拍拍拍 | 国产日韩视频在线观看 |