(sed's/^/lineofoutput:/')done ユーザーは次のように入力できます。 sleep5 このようなフォアグラウンド コマンド; echohi はブロックされ、プロンプトはすぐには再表示されません。あるいは、次のようなバックグラウンド コマンドを入力できます。"/> (sed's/^/lineofoutput:/')done ユーザーは次のように入力できます。 sleep5 このようなフォアグラウンド コマンド; echohi はブロックされ、プロンプトはすぐには再表示されません。あるいは、次のようなバックグラウンド コマンドを入力できます。">

ホームページ  >  記事  >  バックエンド開発  >  Go でフォアグラウンドまたはバックグラウンドのシェル コマンドを実行する方法

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

WBOY
WBOY転載
2024-02-08 22:57:311089ブラウズ

如何在 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 までご連絡ください。