![crontabはマルチスレッドですか? [閉鎖]](https://linux33.com/image/17761/crontab%E3%81%AF%E3%83%9E%E3%83%AB%E3%83%81%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
crontabの詳細情報がどこにあるのかわからないので、ここで質問します。 crontabはマルチスレッドですか?どのように動作しますか?
答え1
おそらくそうではありません。 cronがすることは、(簡単に言えば)1つまたは別のジョブを実行する時間になるまで監視することです。その場合は、そのジョブを実行するプロセスをフォークし、ジョブが完了したことを定期的に確認してクリーンアップできます。それ。
このような待ち時間にMTを使用することもできますが、少し過度だと思います。とともにwait()
/waitpid()
ファミリー機能、すべての子供たちが一度に見ることができます(幼稚園の先生に最適です:-D)。そして、ブロックせずに見ることができるので、次の作業を行う時間も続けて見つけることができます。そしてSIGCHLD
も存在します。
答え2
Linuxにはいくつかのcron実装があります。自分だけのクローンデーモン実装を作成しようとしない限り、そのうちどれがマルチスレッドかどうかは実際に関連性のある質問ではないと思います。
答え3
これらの従来のUNIXコマンドはマルチスレッドではありません。彼らはフォーク実行モデルを使用します。 cron の場合、crontab 行のコマンドを実行するためにシェルを分岐します。 cronデーモンは、子プロセスの実行が完了するのを待ちません。ただし、IIRCは子プロセスによって送信された特定の信号を処理できます。