婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫(kù) > Python中判斷subprocess調(diào)起的shell命令是否結(jié)束

Python中判斷subprocess調(diào)起的shell命令是否結(jié)束

熱門標(biāo)簽:315電話機(jī)器人廣告 南京銷售外呼系統(tǒng)軟件 地圖制圖標(biāo)注位置改變是移位嗎 地圖標(biāo)注的意義點(diǎn) 上海機(jī)器人外呼系統(tǒng)哪家好 蓋州市地圖標(biāo)注 房產(chǎn)電銷外呼系統(tǒng) 地圖標(biāo)注微信發(fā)送位置不顯示 浙江電銷卡外呼系統(tǒng)好用嗎

前言

最近在使用subprocess遇到個(gè)問題,折騰了好半天才找到簡(jiǎn)單的解決辦法,在這里記錄下。

環(huán)境

Python:2.7.10

庫(kù):subprocess, logging

問題

使用subprocess的Popen類來執(zhí)行shell命令,要怎么樣才能知道命令執(zhí)行結(jié)束了,以此來執(zhí)行回調(diào)方法。

解決辦法

使用subprocess.Popen.poll方法來獲取命令的執(zhí)行情況。

poll方法的返回值有兩種情況   

1. 當(dāng)命令未運(yùn)行結(jié)束的時(shí)候,返回None   

2. 當(dāng)命令結(jié)束時(shí),返回命令的返回值

演示

這里使用logging模塊來輔助顯示命令執(zhí)行時(shí)間

分別使用兩種調(diào)用shell命令的方式來測(cè)試

shell=True

shell=False

完整演示

補(bǔ)充:system函數(shù)返回(如何判斷調(diào)用的shell命令是否執(zhí)行成功)

例:

status = system("./test.sh");

1、先統(tǒng)一兩個(gè)說法:

(1)system返回值:指調(diào)用system函數(shù)后的返回值,比如上例中status為system返回值

(2)shell返回值:指system所調(diào)用的shell命令的返回值,比如上例中,test.sh中返回的值為shell返回值。

2、如何正確判斷test.sh是否正確執(zhí)行?

僅判斷status是否==0?或者僅判斷status是否!=-1?

都錯(cuò)!

3、man中對(duì)于system的說明

RETURN VALUE

The value returned is -1 on error (e.g. fork() failed), and the return

status of the command otherwise. This latter return status is in the

format specified in wait(2). Thus, the exit code of the command will

be WEXITSTATUS(status). In case /bin/sh could not be executed, the

exit status will be that of a command that does exit(127).

看得很暈吧?

system函數(shù)對(duì)返回值的處理,涉及3個(gè)階段:

階段1:創(chuàng)建子進(jìn)程等準(zhǔn)備工作。如果失敗,返回-1。

階段2:調(diào)用/bin/sh拉起shell腳本,如果拉起失敗或者shell未正常執(zhí)行結(jié)束(參見備注1),原因值被寫入到status的低8~15比特位中。system的man中只說明了會(huì)寫了127這個(gè)值,但實(shí)測(cè)發(fā)現(xiàn)還會(huì)寫126等值。

階段3:如果shell腳本正常執(zhí)行結(jié)束,將shell返回值填到status的低8~15比特位中。

備注1:

只要能夠調(diào)用到/bin/sh,并且執(zhí)行shell過程中沒有被其他信號(hào)異常中斷,都算正常結(jié)束。

比如:不管shell腳本中返回什么原因值,是0還是非0,都算正常執(zhí)行結(jié)束。即使shell腳本不存在或沒有執(zhí)行權(quán)限,也都算正常執(zhí)行結(jié)束。

如果shell腳本執(zhí)行過程中被強(qiáng)制kill掉等情況則算異常結(jié)束。

如何判斷階段2中,shell腳本是否正常執(zhí)行結(jié)束呢?系統(tǒng)提供了宏:WIFEXITED(status)。如果WIFEXITED(status)為真,則說明正常結(jié)束。

如何取得階段3中的shell返回值?你可以直接通過右移8bit來實(shí)現(xiàn),但安全的做法是使用系統(tǒng)提供的宏:WEXITSTATUS(status)。

由于我們一般在shell腳本中會(huì)通過返回值判斷本腳本是否正常執(zhí)行,如果成功返回0,失敗返回正數(shù)。

所以綜上,判斷一個(gè)system函數(shù)調(diào)用shell腳本是否正常結(jié)束的方法應(yīng)該是如下3個(gè)條件同時(shí)成立:

(1)-1 != status

(2)WIFEXITED(status)為真

(3)0 == WEXITSTATUS(status)

注意:

根據(jù)以上分析,當(dāng)shell腳本不存在、沒有執(zhí)行權(quán)限等場(chǎng)景下時(shí),以上前2個(gè)條件仍會(huì)成立,此時(shí)WEXITSTATUS(status)為127,126等數(shù)值。

所以,我們?cè)趕hell腳本中不能將127,126等數(shù)值定義為返回值,否則無法區(qū)分中是shell的返回值,還是調(diào)用shell腳本異常的原因值。shell腳本中的返回值最好多1開始遞增。

判斷shell腳本正常執(zhí)行結(jié)束的健全代碼如下:

#include  stdio.h>
#include  stdlib.h> 
int main() 
{ 
    pid_t status;   
    status = system("./test.sh"); 
    if(status == -1)
    {
 printf("system error... \n");
     }
 else
 {
            if(WIFEXITED(status))
     {
                if(0 == WEXITSTATUS(status))
         {
                    printf("run  successfully... \n");
                }
  else
  {
                    printf("run failed %d \n",WEXITSTATUS(status));
                 }
             }
      else
     {
                printf("exit code %d \n",WEXITSTATUS(status));
            }
 }
    return 0;
 } 

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 詳談python中subprocess shell=False與shell=True的區(qū)別
  • python3通過subprocess模塊調(diào)用腳本并和腳本交互的操作
  • python subprocess pipe 實(shí)時(shí)輸出日志的操作
  • 通過實(shí)例解析python subprocess模塊原理及用法
  • 使用python執(zhí)行shell腳本 并動(dòng)態(tài)傳參 及subprocess的使用詳解
  • python中的subprocess.Popen()使用詳解
  • 解決python subprocess參數(shù)shell=True踩到的坑

標(biāo)簽:赤峰 陽泉 金華 日照 臨汾 克拉瑪依 雙鴨山 貴州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python中判斷subprocess調(diào)起的shell命令是否結(jié)束》,本文關(guān)鍵詞  Python,中,判斷,subprocess,調(diào)起,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python中判斷subprocess調(diào)起的shell命令是否結(jié)束》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python中判斷subprocess調(diào)起的shell命令是否結(jié)束的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美少妇一区二区| 亚洲一区二区三区四区五区中文 | 国产午夜精品美女毛片视频| 亚洲视频免费观看| 从欧美一区二区三区| 久久久精品欧美丰满| 韩国午夜理伦三级不卡影院| 日韩色在线观看| 麻豆91精品91久久久的内涵| 色成人在线视频| 亚洲日本免费电影| 91年精品国产| 亚洲美女电影在线| 欧美做爰猛烈大尺度电影无法无天| 日本一区二区在线不卡| 91亚洲资源网| 日韩—二三区免费观看av| 色婷婷激情久久| 丝袜美腿亚洲一区| 2022国产精品视频| 91婷婷韩国欧美一区二区| 亚洲免费伊人电影| 8x8x8国产精品| 国产经典欧美精品| 亚洲免费在线看| 欧美一级高清片在线观看| 久久精品国产一区二区| 中文字幕乱码亚洲精品一区| 欧美亚洲愉拍一区二区| 日本免费新一区视频| 国产精品久久久爽爽爽麻豆色哟哟| 欧美视频三区在线播放| 国产成人精品免费一区二区| 洋洋av久久久久久久一区| 久久先锋影音av| 欧美综合视频在线观看| 国产精品69久久久久水密桃| 亚洲美女视频在线观看| 欧美xxxxx裸体时装秀| 色妞www精品视频| 麻豆91精品视频| 亚洲一区二区三区三| 国产精品丝袜在线| 2欧美一区二区三区在线观看视频| 99re成人精品视频| 国产在线不卡一区| 日韩国产精品久久久| 亚洲精品免费在线| 国产精品视频麻豆| 久久免费视频色| 精品视频在线免费看| www.日韩在线| 国产99久久久国产精品| 美女视频第一区二区三区免费观看网站| 中文字幕一区二区三区在线观看| 精品黑人一区二区三区久久| 色婷婷激情久久| 色综合视频在线观看| 国产成人精品1024| 日本不卡123| 亚欧色一区w666天堂| 国产日韩亚洲欧美综合| 久久久久97国产精华液好用吗| 91国偷自产一区二区开放时间 | 狠狠狠色丁香婷婷综合激情| 亚洲男人的天堂在线aⅴ视频| 久久精品视频在线看| 日韩视频一区二区三区在线播放| 欧美色成人综合| 欧美三级电影在线看| 91视频国产观看| 北条麻妃国产九九精品视频| 美女视频免费一区| 国产一区二区在线观看免费| 韩国三级电影一区二区| 日产精品久久久久久久性色| 毛片不卡一区二区| 国产99久久久国产精品免费看| 懂色av一区二区夜夜嗨| 成人免费高清在线观看| 色哟哟在线观看一区二区三区| 91国偷自产一区二区开放时间| 精品1区2区3区| 欧美成人伊人久久综合网| 欧美精品一区二区三区在线| 国产精品水嫩水嫩| 亚洲高清视频在线| 美女在线视频一区| 99久久精品国产网站| 欧美久久久久免费| 久久久久久久久久久电影| 国产精品你懂的| 日韩黄色免费电影| 福利电影一区二区三区| 欧美日韩不卡视频| 欧美激情一区在线观看| 一个色妞综合视频在线观看| 免费在线观看成人| 成人app下载| 7878成人国产在线观看| 久久久噜噜噜久久中文字幕色伊伊| 中文字幕精品在线不卡| 日韩和欧美一区二区| 国产精品一区二区三区乱码| 91电影在线观看| 亚洲精品一区二区三区99| 亚洲美女电影在线| 免费欧美日韩国产三级电影| av一二三不卡影片| 精品剧情v国产在线观看在线| 亚洲欧美视频在线观看视频| 久久精品国产免费看久久精品| 94色蜜桃网一区二区三区| 日韩美女一区二区三区| 一区二区三区四区乱视频| 国产美女视频一区| 91麻豆精品91久久久久同性| 亚洲色图视频网| 美女在线观看视频一区二区| 欧美午夜一区二区三区| 欧美国产成人在线| 美女精品自拍一二三四| 欧美日韩亚洲综合在线| 国产精品不卡在线| 国产成人鲁色资源国产91色综 | 久久国产精品99久久人人澡| 色婷婷综合久久久中文字幕| 精品国内片67194| 青青青伊人色综合久久| 欧美色综合天天久久综合精品| 日韩一区在线免费观看| 不卡视频一二三四| 中文字幕欧美三区| 国产精品小仙女| 日韩精品最新网址| 秋霞午夜av一区二区三区| 欧美日韩成人综合在线一区二区| 亚洲国产视频在线| 99精品久久免费看蜜臀剧情介绍| 日韩免费视频一区二区| 无码av中文一区二区三区桃花岛| 欧美亚洲动漫另类| 成人免费在线视频| 精品视频在线免费| 国产日韩精品久久久| 色婷婷av一区二区三区之一色屋| 国产精品白丝jk黑袜喷水| 欧美日韩视频在线观看一区二区三区| 国产精品入口麻豆原神| 国产一区二区美女| 国产午夜精品久久久久久免费视| 亚洲成人综合在线| 欧美亚洲国产怡红院影院| 亚洲欧美一区二区三区极速播放| 懂色一区二区三区免费观看| 国产无遮挡一区二区三区毛片日本| 极品美女销魂一区二区三区免费| 精品久久久久一区二区国产| 精品一区二区免费| 亚洲精品一区二区三区蜜桃下载| 成熟亚洲日本毛茸茸凸凹| 国产亚洲一二三区| 成人av影视在线观看| 日韩毛片在线免费观看| 色综合色狠狠天天综合色| 亚洲精品一二三区| 宅男在线国产精品| 国产在线一区观看| 国产精品麻豆视频| 欧美一a一片一级一片| 亚洲6080在线| 欧美一区二区三区在线| 国产乱人伦偷精品视频不卡| 久久久久高清精品| 日本大香伊一区二区三区| 久久精品久久综合| 亚洲日本中文字幕区| 91精品国产乱| 成人午夜碰碰视频| 日日夜夜一区二区| 国产精品丝袜一区| 欧美一区二区三区免费视频 | 强制捆绑调教一区二区| 精品成人私密视频| 在线看日韩精品电影| 国产伦理精品不卡| 亚洲成人自拍偷拍| 亚洲视频香蕉人妖| 久久婷婷综合激情| 91.com在线观看| 色哟哟欧美精品| 成人免费av资源| 国产一区二区三区四区五区美女 | 日韩午夜在线观看| 91麻豆精品视频| 国内久久精品视频| 日韩电影免费一区| 亚洲精品ww久久久久久p站| 中文字幕第一区第二区| 精品对白一区国产伦|