0

最初に次のコマンドを実行します。

 $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 を取得できませんか、それともこの謎を解決する別の方法はありますか?

ありがとう!

4

2 に答える 2

2

proc_get_status ... を使用して PID を取得できます。

http://php.net/manual/en/function.proc-get-status.php

この関数は、要素の 1 つが pid である配列を返します。入力パラメータは proc_open の戻り値です ...

于 2012-09-17T10:37:57.713 に答える