ホームページ >バックエンド開発 >PHPチュートリアル >Linux_PHP チュートリアルでは php exec の戻り値を負にすることはできません
Linux の php exec の戻り値は負の値にはなりません。必要な場合は参照してください。
まずはexec関数の使い方を学びましょう
実行()
原型:
コードは次のとおりです | コードをコピー |
string exec (string command [, string array [, int return_var]]) |
exec () 関数は system () と似ていますが、指定されたコマンドを実行しますが、結果は出力されず、結果の最後の行が返されます。コマンド結果の最後の行のみを返しますが、2 番目のパラメーター配列を使用すると、配列の最後に結果を 1 行ずつ追加することで完全な結果を取得できます。したがって、配列が空でない場合は、呼び出す前に unset() を使用して配列をクリアするのが最善です。第3パラメータは第2パラメータを指定した場合のみ、コマンド実行時のステータスコードを取得できます。
例:
コードは次のとおりです | コードをコピー |
exec("/bin/ls -l");
exec("/bin/ls -l", $res);
exec("/bin/ls -l", $res, $rc);
| 3 番目のパラメータ、なぜ負の数値を受け入れられないのですか??
ここでの &$return_var はプログラムの戻り値です。最初の私の答えは、負の数を指定できるというものでした。
コードは次のとおりです
#include |
#include |
Printf("^_^n"); -5 を返します; } この-5は戻り値ですが、0か1で書くのが慣例です。 |
注: 多くの人は C コードで main 関数を void main() として記述しますが、これは実際には間違っているため、詳細は説明しません。
、PHP 呼び出しも正常です。
コードは次のとおりです
E:devphp535>php -r "exec('return.exe',$out,$a);var_dump($a);" | |
int(-2) |
しかし、Linux では、この値は常に正の数になります。私は最初、権限の問題ではないかと疑っていましたが、chmod +x を使用した後、権限の問題は解決されました。
コードは次のとおりです
exec("/home/wwwroot/test/rtest.out 2>&1",$out,$a); | var_dump($out,$a);|||||
256+return val のようになります。実際には負の数が返されますが、正の数に変換されていることがわかります。
このようにして、exec が OS に返す値を確認できます。 たぶん Linux ではプログラムの戻り値は 1 ~ 255 の範囲で規定されているのでしょうが、このルールはわかりません。ただし、これが Linux に当てはまるかどうかはまだ確認されていません。この質問は痛ましいものであり、あまり重要ではありませんが、同様の問題に遭遇した人の参考のためにここに残しておくことができます。しかし、ここで詳細に立ち入る必要はありません。本当に徹底的に理解したい場合は、シェルを見てください |