ホームページ > バックエンド開発 > Golang > コンソールで同じコマンドが機能するのに、複数の引数を指定すると Go `exec.Command` が失敗するのはなぜですか?

コンソールで同じコマンドが機能するのに、複数の引数を指定すると Go `exec.Command` が失敗するのはなぜですか?

Patricia Arquette
リリース: 2024-12-19 19:58:15
オリジナル
791 人が閲覧しました

Why Does My Go `exec.Command` Fail with Multiple Arguments When the Same Command Works in the Console?

複数の引数を使用したコマンドの実行

Go でコマンドを実行するときは、引数がコマンドに渡される方法に注意することが重要です。ユーザーが最近遭遇した問題は、特定の引数を指定してコマンド「top」を実行すると、コンソールからは機能するが、exec パッケージを使用すると失敗するというものでした。

問題

ユーザーのコードは、「top -n 10 -l 2」の実行には成功しましたが、「top -o cpu -n 10 -l 2」の実行には失敗しました。 exec パッケージによって提供されるエラー メッセージは、「-o cpu」引数が無効であることを示していました。

解決策

問題は、引数を渡す方法にあります。コマンド。コンソール上のコマンド ライン インタープリタは自動的に引数を分離し、コマンドが引数を正しく解析できるようにします。ただし、exec パッケージを使用する場合は、引数を明示的に分離する必要があります。

この特定のケースでは、正しいコードは次のようになります。

cmd := exec.Command(app, "-o", "cpu", "-n", "10", "-l", "2")
ログイン後にコピー

引数を分離することで、exec パッケージはそれらを期待どおりコマンドに渡して、エラーを解決します。

以上がコンソールで同じコマンドが機能するのに、複数の引数を指定すると Go `exec.Command` が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート