最初に次のコマンドを実行します。
$retVal = proc_close(proc_open("rfcomm connect \/dev\/rfcomm0 &> /dev/null 2> /dev/null &", array(), $pipe));
proc_open の直後に proc_close を使用する必要があります。そうしないと、コマンドによって PHP ページがハングします。スクリプトの後半で、このバックグラウンド プロセスの PID を調べようとすると、grep リクエストのみが返されます。
$val = shell_exec("ps aux | grep rfcomm0");
私のgrepコマンドのプロセスのみを返します:
www データ 6412 0.0 0.3 2004 624 ? S 12:23 0:00 grep rfcomm0
shell_exec からサーバーの SSH ターミナルにまったく同じコマンドを入力すると、次のようになります。
www-data 6047 0.0 0.3 1752 592 ? S 12:10 0:00 rfcomm connect /dev/rfcomm0
root 6415 0.0 0.4 3532 804 pts/1 S+ 12:27 0:00 grep rfcomm0
最初の結果は、私が望む PID です。PHP は自身のプロセスの PID を取得できませんか、それともこの謎を解決する別の方法はありますか?
ありがとう!