質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

8193閲覧

Python3 subprocessのreturncodeについて

person

総合スコア223

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/12/01 07:13

subprocessでコマンドを実行したときのreturncodeがいくつかあったのですが、
どういう解釈をすればいいでしょうか。

0が正常終了、それ以外は基本的に異常終了。

と解釈していますが、1と2は何が違うのでしょうか。

下のように試すと、1が実行した結果エラー、2が実行できずエラー
のような気がしますが。

回答よろしくお願いします。

Python

1import subprocess 2 3# returncode:0 4#cmd = "ping -c 5 -w 15 192.168.0.10" 5 6# returncode:1 7# 1秒間に500回pingを送信(無理そうな数を指定) 8cmd = "ping -c 500 -w 1 192.168.0.10" 9 10# returncode:2 11# オプションの設定値を間違えてみる(15秒間中の送信回数を'a'回) 12#cmd = "ping -c a -w 15 192.168.0.10" 13 14# FileNotFoundError: [Errno 2] No such file or directory: 'pinggg' 15# コマンド名を間違えてみる(pingコマンドの名称を間違えて、pingggコマンド) 16#cmd = "pinggg -c 5 -w 15 192.168.0.10" 17 18 19exec = cmd.split(" ") 20try: 21 ret = subprocess.run(exec, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 22 23 #print(ret) 24 print(ret.returncode) 25except Exception as e: 26 print(type(e)) 27 print(e)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

subprocess.runの戻り値の要素であるreturncodeはあくまで中で呼び出したプロセスが返した終了コードをそのまま返すだけです。

そのため、この質問にある「どういう解釈をすればいいでしょうか。」には、呼び出したコマンドの終了コードの内容を知る必要があります。

※ちなみに、手元のPCでman pingを実行すると、このような記述がありました。

If ping does not receive any reply packets at all it will exit with code 1. If a packet count and
deadline are both specified, and fewer than count packets are received by the time the deadline has
arrived, it will also exit with code 1. On other error it exits with code 2. Otherwise it exits
with code 0. This makes it possible to use the exit code to see if a host is alive or not.

投稿2020/12/01 07:57

attakei

総合スコア2738

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問