ホームページ バックエンド開発 PHPチュートリアル Linux_PHPチュートリアルでPHPのexecの戻り値が負の値にならない問題

Linux_PHPチュートリアルでPHPのexecの戻り値が負の値にならない問題

Jul 13, 2016 am 10:56 AM
exec linux php windows 関数 存在する はい 環境 負の数 戻る 質問

Windows環境ではexec関数は問題ありませんが、Linuxでは戻り値が負になることはありません。

string exec ( string $command [, array &$output [, int &$return_var ]] )

3 番目のパラメータ、なぜ負の数値を受け入れられないのですか?? ここでの &$return_var はプログラムの戻り値です。最初の私の答えは、負の数を指定できるというものでした。
一般的にC言語では次のように書きます

コードは次のとおりですコードをコピー
#include

#include
int main()
{
Printf("^_^n");
-5 を返します;
}

この-5は戻り値ですが、0か1で書くのが慣例です。

注: 多くの人は C コードで main 関数を void main() として記述しますが、これは実際には間違っているため、詳細は説明しません。
上記のコードをコンパイルした後、CMD で実行すると、出力結果を確認できます。次に、「echo %ERRORLEVEL%」と入力して Enter キーを押すと、プログラムの戻り値が表示されます。この %ERRORLEVEL% は、プログラムの戻りステータスを表します。確かに、WIN では負の数になる可能性があります。写真に示すように:

、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);
配列(1) { [0]=> 文字列(3) "^_^" } int(251)

256+return val のようになります。実際には負の数が返されますが、正の数に変換されていることがわかります。

次に、standard/exec.c のソース コードを調べましたが、何の手がかりも見つかりませんでした。そして、あるステップを忘れていたことに突然気づきました。プログラムがOSに返す値を見るのを忘れていました
echo $? を使用すると、最後のコマンドのステータスを表示できます。

コードは次のとおりですコードをコピー-bash-3.00$ vi main.c

このようにして、exec が OS に返す値を確認できます。
Linux では、この戻り値は符号なし型で正の数値を返すため、PHP に渡されるときも、実際には exec 呼び出しによって返される値になります。

ディレクトリ操作の実行


子プロセスの実行方法をより詳細に制御するには、proc_open() 関数を使用できます:

2 反対票

子プロセスの実行方法をより詳細に制御するには、proc_open() 関数を使用できます。

-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 = 配列(
// /dev/null の代わりに、より移植性の高いものをここに渡すことはできますか? 0 => array('file', '/dev/null', 'r'),
1 => array('file', '/dev/null', 'w'),
2 => array('file', '/dev/null', 'w'),
);

$ph = proc_open($cmd, $spec, $pipes, $cwd); if ($ph === FALSE) {
// オープンエラー
}

// 上記のように /dev/null を渡さない場合は、閉じる必要があります
// それ以外の場合は、パイプの終端で完了を通知します
// 以下の proc_close の呼び出しは無期限にブロックされる可能性があります
foreach ($pipes として $pipe) {
@fclose($pipe); }

// プロセスが終了するまで待機します
$exit_code = proc_close($ph); if ($exit_code !== 0) {
// 子エラー
}






http://www.bkjia.com/PHPjc/632187.htmlwww.bkjia.comtru​​e

http://www.bkjia.com/PHPjc/632187.html技術記事 Windows環境ではexec関数は問題ありませんが、Linuxでは戻り値が負になることはありません。 string exec ( string $command [, array $output [, int $return_var ]] ) 3 番目のパラメータ...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口 Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口 Feb 19, 2025 pm 04:54 PM

DeepSeekは、Webバージョンと公式Webサイトの2つのアクセス方法を提供する強力なインテリジェント検索および分析ツールです。 Webバージョンは便利で効率的であり、公式ウェブサイトは包括的な製品情報、ダウンロードリソース、サポートサービスを提供できます。個人であろうと企業ユーザーであろうと、DeepSeekを通じて大規模なデータを簡単に取得および分析して、仕事の効率を向上させ、意思決定を支援し、イノベーションを促進することができます。

Bybit Exchangeの最新バージョンを更新する方法は?更新されていない場合、影響はありますか? Bybit Exchangeの最新バージョンを更新する方法は?更新されていない場合、影響はありますか? Feb 21, 2025 pm 10:54 PM

Bybit取引所の更新方法は、プラットフォームとデバイスによって異なります。モバイル:更新を確認し、App Storeにインストールします。デスクトップクライアント:ヘルプメニューの更新を確認し、自動的にインストールします。 Webページ:更新のために公式Webサイトに手動でアクセスする必要があります。交換の更新に失敗すると、セキュリティの脆弱性、機能的な制限、互換性の問題、およびトランザクション実行効率の低下につながる可能性があります。

PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? Mar 05, 2025 pm 05:57 PM

ピン張りのノードの詳細な説明とインストールガイドこの記事では、ピネットワークのエコシステムを詳細に紹介します - PIノードは、ピン系生態系における重要な役割であり、設置と構成の完全な手順を提供します。 Pinetworkブロックチェーンテストネットワークの発売後、PIノードは多くの先駆者の重要な部分になり、テストに積極的に参加し、今後のメインネットワークリリースの準備をしています。まだピン張りのものがわからない場合は、ピコインとは何かを参照してください。リストの価格はいくらですか? PIの使用、マイニング、セキュリティ分析。パインワークとは何ですか?ピン競技プロジェクトは2019年に開始され、独占的な暗号通貨PIコインを所有しています。このプロジェクトは、誰もが参加できるものを作成することを目指しています

DeepSeekをインストールする方法 DeepSeekをインストールする方法 Feb 19, 2025 pm 05:48 PM

DeepSeekをインストールするには、Dockerコンテナ(最も便利な場合は、互換性について心配する必要はありません)を使用して、事前コンパイルパッケージ(Windowsユーザー向け)を使用してソースからコンパイル(経験豊富な開発者向け)を含む多くの方法があります。公式文書は慎重に文書化され、不必要なトラブルを避けるために完全に準備します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

Coinsuper Exchangeソフトウェアチャネル公式ウェブサイトの入り口 Coinsuper Exchangeソフトウェアチャネル公式ウェブサイトの入り口 Feb 21, 2025 pm 10:39 PM

Coinsuper Exchangeの公式ウェブサイトの入り口:https://www.coinsuper.com。クライアントのダウンロードチャネルは、Windowsクライアント、MacOSクライアント、およびモバイル(iOS/Android)です。登録には、電子メール、携帯電話番号、パスワードが必要であり、取引する前に実際の認証を完了する必要があります。このプラットフォームは、ビットコイン、イーサリアムなどを含むさまざまなデジタル資産トランザクションを提供し、注文とアクセプターの両方で0.1%のトランザクション料金が0.1%です。セキュリティ保護ガードには、コールドウォレットストレージ、デュアルファクター検証、マネーロンダリングアンチマネーロンダリング、テロ対策資金調達措置、およびセキュリティパブリックが含まれます

See all articles