一番上のPIDが$$と違うの?

一番上のPIDが$$と違うの?

私は次のような作業をしてきました。

#!/bin/sh

NO_START=1
STEP_SIZE=1
NO_END=100

DATE_STR=$(date +%m%d_%H%M%S)
RUN_DIR=./$DATE_STR

mkdir $RUN_DIR

echo PID = $$. See $RUN_DIR/$$.log for outputs and errors.
log_file=$RUN_DIR/$$.log; exec > $log_file 2>&1; date

for i in `seq $NO_START $STEP_SIZE $NO_END`
do
    ./c/anExternalCProgram $RUN_DIR
done

私は今日エコーされたPIDがに表示されているものと異なることを発見しましたtop。なぜですか?

答え1

これをデバッグするには、フィールドをtop選択してここにカーソルを移動してを押して開きます。その親プロセスIDを実際に表示するには、他のフィールド()のいずれかを選択解除する必要があります。fPPIDSpaceVIRT

を使用すると、PPIDどのプログラムがシェルを呼び出したかを知ることができるはずです。これはおそらくプログラムのPIDであり、実際にはtop

関連情報