Go でフォアグラウンドまたはバックグラウンドのシェル コマンドを実行する方法

WBOY
リリース: 2024-02-08 22:57:31
転載
1132 人が閲覧しました

如何在 Go 中运行前台或后台 shell 命令

php エディター Apple は、Go でフォアグラウンドまたはバックグラウンドのシェル コマンドを実行する方法を紹介します。 Go 言語では、シェル コマンドの実行は非常に簡単です。 os/exec パッケージを使用すると、さまざまなシェル コマンドを簡単に実行し、その出力を取得できます。フォアグラウンド コマンドを実行するかバックグラウンド コマンドを実行するかに関係なく、Go 言語は対応するメソッドを提供します。この記事では、Go 言語を使用してフロント シェル コマンドまたはバックグラウンド シェル コマンドを実行する方法を学び、いくつかの一般的な使用例を検討します。はじめましょう!

質問内容

goでは、ユーザーからシェルコマンドを実行でき、フォアグラウンドで実行されているコマンドのみをブロックできる必要があります(&を使用して実行されるのではありません)。コマンドの出力を取得します。

たとえば、bash では次のことができます:

リーリー

ユーザーは、sleep 5; echo hi のようなフォアグラウンド コマンドを入力することもできますが、これはブロックされ、プロンプトはすぐには再表示されません。または、{ sleep 5; echo hi; のようなバックグラウンド コマンドを入力することもできます。 & を実行するとブロックされず、コマンドがバックグラウンドで実行されている間、プロンプトがすぐに再表示されます。

Go で再作成するにはどうすればよいですか?これが私の試みです:

リーリー

実行中の sleep 5; echo hi はブロックされて機能しますが、 { sleep 5; echo hi; } & エラー:

リーリー

コンテキストとして、音声コントロールを移植しました。ユーザーは、コマンドがシェルを通じて実行され、入力出力のキーストロークをシミュレートする runtype などのアクションを設定できます。ユーザーはバックグラウンド コマンドを使用して、コマンドに合わせて音声コントロールを続行できます。たとえば、「メニュー」と言ったときにメニューを起動し、メニューが開いている間も音声コントロールを使用できます。 menu: runtype printf %s\\ n あれやこれや | dメニュー &

解決策

この動作は、stdout を名前付きパイプに設定することで実現できます。

以上がGo でフォアグラウンドまたはバックグラウンドのシェル コマンドを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!