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

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

新規登録して質問してみよう
ただいま回答率
85.48%
標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

779閲覧

自動起動の標準出力について

hanakosan

総合スコア6

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/03/17 11:29

前提・実現したいこと

debian系Linuxを使用しております。
python3の勉強でサブプロセスのコードがあるテストプログラムを作成しました。
また、作成したテストプログラムをスタートアップスクリプト登録しました。
sudo systemctl enable testprogram

実現したいこととしては、テストプログラムを自動起動させ、標準出力結果を読み込むことです。

発生している問題・エラーメッセージ

現在発生している問題点としましては、テストプログラムを自動起動させると 標準出力結果を得ることができないことです。 手動でテストプログラムを起動させると、標準出力結果を得ることができました。 なぜ、自動起動だと標準出力結果が得られないのか、分からない状況です。 ※プログラマー初心者のため、解決できず。

該当のソースコード

python3

1p = subprocess.Popen(mycmd, stdout = subprocess.PIPE, stderr = subprocess.STDOUT) 2while proc.poll() is None: 3 time.sleep(0.1) 4buf = p.stdout.readline().decode("utf-8")

補足情報(FW/ツールのバージョンなど)

Python3のバージョンは「3.5.3」です。

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

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

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

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

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

otn

2020/03/17 11:38

> テストプログラムを自動起動させると 具体的に、どういう方法で起動していますか?
hanakosan

2020/03/17 11:48

テストプログラムをスタートアップスクリプトとして登録したのち、Linuxマシンを再起動。 Linuxマシンが再起動した時に、テストプログラムが実行されるということを自動起動として 記載しました。
CHERRY

2020/03/17 12:00

標準出力結果は、どのような方法で確認されたのでしょうか?
otn

2020/03/17 12:05

> スタートアップスクリプトとして登録 どこに登録したのでしょうか? OS起動時に起動するものなら、コンソール /dev/console に出ると思います。
otn

2020/03/17 12:07

もしかして、 sudo systemctl enable testprogram のことを言ってますか?
hanakosan

2020/03/17 12:25

説明が下手ですみません。 sudo systemctl enable testprogram を言っております。
guest

回答1

0

ベストアンサー

質問が、分かってきました。

標準出力結果を得ることができない

というのは、p.stdout.readline()のことですね。

コード全文が無いので、想像ですが、subprocess.Popenが失敗しているのではないでしょうか?

投稿2020/03/17 12:18

編集2020/03/17 12:19
otn

総合スコア84557

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

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

hanakosan

2020/03/17 12:41

subprocess.Popen()に失敗しますと、p.stdout.readline().decode("utf-8")では空文字列が返されるという認識でよろしいのでしょうか? コンソールでテストプログラムを実行するとテストプログラムのbufに標準出力結果が得られ、 自動起動ではbufに標準出力結果が得られないというのは、なぜでしょうか?
otn

2020/03/17 12:57 編集

> 自動起動ではbufに標準出力結果が得られない コード全文を見ないと何とも。 > 失敗しますと、~~認識でよろしいのでしょうか? その時点でプログラムが終了することが多いと思います。
hanakosan

2020/03/18 04:18

> その時点でプログラムが終了することが多いと思います。 回答ありがとうございます。 プログラムの問題点が分かり、修正しましたら、改善できました。 誠にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問