gssproxy
特にArch Linuxで使用しています。
Name : gssproxy
Version : 0.8.0-1
/usr/bin/gssproxy
次の動作が発生しました。このように出力をパイプしようとすると
/usr/bin/gssproxy | cat
ブロックされます。ただし、このコマンドを実行すると
/usr/bin/gssproxy
ブロックされず、バックグラウンドで別のプロセスが生成されます。
root 13720 0.0 0.0 59732 584 ? Ssl 11:44 0:00 /usr/bin/gssproxy
そして存在します。
パイプされる出力が意味がないかもしれないことに同意しますgssproxy
が、この動作が発生する理由を知りたいと思います。特にcat
詰まりの原因は何ですか?
編集する:
ブロックとは、次のコマンドを意味します。
timeout -k 1 1 /usr/bin/gssproxy | cat
、
終了せずに同時に
timeout -k 1 1 /usr/bin/gssproxy
すぐに終了します。どちらのコマンドもgssproxy
バックグラウンドでプロセスを生成します。なぜ最初のコマンドが期待どおりに1秒後に終了しないのか疑問に思います。
答え1
@Kusalanandaが述べたように、gssproxy
デーモンプロセスとして実行すると、親プロセスは子プロセスが終了するのを待つことができます。
以下は、同じ状況をシミュレートするショートシェルスクリプトです。
$ cat t1
#!/bin/bash
sleep 10 &
$ date; ./t1 | cat ; date
Sun Apr 7 10:59:02 BST 2019
Sun Apr 7 10:59:12 BST 2019
date コマンドは、純粋に cat が終了した後 (10 秒) サブプロセスが存在することを示すためのものです。