Linuxで動作するCで簡単なデーモンを作成しました。信号マスクを正しく設定する方法を理解しようとしています。デーモンに次のコードがあります。Linux Cデーモンのシグナルマスクの設定
ここで、signal_handlerは定義済みの関数です。このthreadで説明されているデーモンの停止に問題があります。
異なる環境(同じユーザー、同じシステム)でデーモンを起動すると、ブロックマスクが異なるという問題を追跡しました。コマンドラインからデーモンを起動すると、次の「PS」の出力が得られます
> ps -C powid -o pid,ppid,command,blocked,caught,ignored
PID PPID COMMAND BLOCKED CAUGHT IGNORED
11406 1 ./powid 0000000000390000 0000000180004003 0000000000000000
をしてPHPスクリプトを経由して、まったく同じデーモンを起動するとき、利回り:ある理由
> ps -C powid -o pid,ppid,command,blocked,caught,ignored
PID PPID COMMAND BLOCKED CAUGHT IGNORED
11491 1 ./powid fffffffe3bfbe207 0000000180004003 00000000010010
私の質問は、ブロックされたマスクは異なる。私の理解では、与えられたCコードはブロックされたマスクをすべての条件下で同じものにするでしょうか?
あなたのPHPインタプリタがそうしているからです。 PHPを使用しないでください。 – 0andriy
残念ながら、 – Marius
私は知っている、PHPはプログラミング言語でも良い環境でもありません。それを選んだ人は故意にそれだった。だから、苦しんでいるのはバンドルの一部です。 – 0andriy