ホームページ >バックエンド開発 >PHPチュートリアル >Linux_PHPチュートリアルでPHPのexecの戻り値が負の値にならない問題
Windows環境ではexec関数は問題ありませんが、Linuxでは戻り値が負になることはありません。
string exec ( string $command [, array &$output [, int &$return_var ]] )
3 番目のパラメータ、なぜ負の数値を受け入れられないのですか??
ここでの &$return_var はプログラムの戻り値です。最初の私の答えは、負の数を指定できるというものでした。
一般的にC言語では次のように書きます
コードをコピー | |
#include
#include |
注: 多くの人は C コードで main 関数を void main() として記述しますが、これは実際には間違っているため、詳細は説明しません。
上記のコードをコンパイルした後、CMD で実行すると、出力結果を確認できます。次に、「echo %ERRORLEVEL%」と入力して Enter キーを押すと、プログラムの戻り値が表示されます。この %ERRORLEVEL% は、プログラムの戻りステータスを表します。確かに、WIN では負の数になる可能性があります。写真に示すように:
コードをコピー | |
int(-2) |
コードをコピー | |
var_dump($out,$a); 配列(1) { [0]=> 文字列(3) "^_^" } int(251) |
次に、standard/exec.c のソース コードを調べましたが、何の手がかりも見つかりませんでした。そして、あるステップを忘れていたことに突然気づきました。プログラムがOSに返す値を見るのを忘れていました
echo $? を使用すると、最後のコマンドのステータスを表示できます。
コードをコピー | |
-bash-3.00$ gcc -o ./mm main.c -bash-3.00$ll 合計48 drwxr-xr-x 3 www www 4096 2011 年 5 月 4 日 2011 drwxr-xr-x 6 www www 4096 2011 年 6 月 23 日 eoc -rwxr-xr-x 1 www www 7131 2月1日 12:47 こんにちは -rw-r--r-- 1 www www 3 2月1日 12:51 hello.c -rw-r--r-- 1 www www 99 2月1日 12:50 main.c -rwxr-xr-x 1 www www 4714 2 月 1 日 12:51 mm drwxr-xr-x 3 www www 4096 2011 年 6 月 24 日のテスト -bash-3.00$ ./mm ^_^ -bash-3.00$ エコー $? 251 -バッシュ-3.00$ |
コードをコピー | |
$cmd = 'スクリプト/script.sh';
$cwd = 'スクリプト';
$spec = 配列( |