午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

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

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

瀏覽:186日期: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 編程
主站蜘蛛池模板: 国产一区二区三区精品在线观看 | 免费日韩视频 | 国产不卡在线观看 | 成人国产一区 | 国产在线视频导航 | 亚洲天堂一区在线观看 | 亚欧成人精品一区二区 | 久久久在线视频 | 麻豆一区二区三区 | 成长的秘密在线观看 | 国产经典av | 亚洲系列中文字幕 | 欧美黄色精品 | 欧美一区二区在线视频 | 天天干天天插 | 韩国午夜激情 | 九九热在线视频观看 | 国产精品第十页 | 丁香花五月婷婷 | 一区二区三区四区在线观看视频 | 国产精品久久9 | 色婷婷视频在线 | 国产激情二区 | 国产成人精品一区二区三区视频 | 婷婷爱五月 | 国产精品999 | 懂色av| 亚洲欧美另类色图 | 麻豆视频免费网站 | 都市激情中文字幕 | 超碰在线国产 | 午夜小视频在线播放 | 国产亚洲欧洲 | 成人欧美激情 | 日韩三级黄 | 国产精品一卡 | 国产中文字幕一区二区 | 中文字幕在线视频免费观看 | 久久人人爽人人爽人人片 | 国产成人免费观看 | av福利网 |