LinuxでCからシェルスクリプトを実行する方法

Jan Deinhard:

LinuxでCからシェルスクリプトを実行するにはどうすればよいですか?

ナテグース:

それは、スクリプト(または実行する他のプログラム)で何をしたいかによって異なります。

スクリプトを実行したいだけの場合がsystem最も簡単ですが、シェルを実行してコマンド(ほとんどの* nixでは/ bin / sh)を実行するなど、他のことも実行します。

標準入力を介してシェルスクリプトをフィードするか、標準出力を消費する場合は、popen(およびpclose)を使用してパイプを設定できますまた、シェル(ほとんどの* nixでは/ bin / sh)を使用してコマンドを実行します。

これらはどちらも内部で多くのことを行うライブラリ関数ですが、ニーズに合わない場合(または単に実験して学びたい場合)は、システムコールを直接使用することもできます。これにより、シェル(/ bin / sh)にコマンドを実行させる必要もなくなります。

関心のシステムコールはforkexecvewaitpidライブラリラッパーの1つを使用することもできますexecveman 3 execそれらのリストのタイプ)。他の待機関数のいずれかを使用することもできます(man 2 waitそれらすべてを備えています)。また、あなたは、システムコールに興味がある可能性がありclonevforkフォークに関連しています。

fork現在のプログラムを複製します。唯一の主な違いは、新しいプロセスがforkの呼び出しから0を返すことです。親プロセスは、新しいプロセスのプロセスID(またはエラー)を返します。

execve 現在のプログラムを新しいプログラムで置き換えます(同じプロセスIDを維持)。

waitpid 親プロセスが特定の子プロセスの終了を待つために使用されます。

forkとexecveのステップを別々にすると、プログラムは、それ自体が作成される前に、それ自体を台無しにすることなく、新しいプロセスの設定を行うことができます。これらには、標準入力、出力、およびstderrを、使用する親プロセスとは異なるファイルに変更する、プロセスのユーザーまたはグループを変更する、子が必要としないファイルを閉じる、セッションを変更する、または環境変数を変更することが含まれます。

pipeおよびdup2システムコールにも興味があるかもしれませんpipeパイプを作成します(入力ファイル記述子と出力ファイル記述子の両方を使用)。dup2ファイル記述子を特定のファイル記述子として複製します(dup似ていますが、ファイル記述子を使用可能な最低のファイル記述子に複製します)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

64ビットLinuxで32ビットWineからシェルスクリプトを実行する方法は?

Flaskアプリからシェルスクリプトを実行する方法

kotlinスクリプトからシェルツールを実行する方法

ホストからAndroidでシェルスクリプトを実行する

stdinからパイプされたスクリプトを実行する(Linux /シェルスクリプト)

Pythonからシェルスクリプトを実行する

Tclからシェルスクリプトを実行する

PHPスクリプトからシェルを実行する方法

DjangoシェルからPythonスクリプトを実行する方法は?

AppleScriptからシェルスクリプトを実行する方法は?

シェルスクリプトからknitrを実行する方法

Hubotからシェルスクリプトを実行する方法

bashスクリプト内からループでシェルコマンドを実行する方法は?

Cシェル:スクリプトからコマンドを実行する

Dockerコンテナーからホストでシェルスクリプトを実行する方法

gitcommitでシェルスクリプトを実行する方法

djangoでスクリプトシェルを実行する方法

シェルスクリプトでSQLを実行する方法

gitcommitでシェルスクリプトを実行する方法

PHPでシェルスクリプトを実行する方法

JenkinsでActiveChoicesプラグインのgroovyスクリプトからシェルを実行する方法

Xcodeのシェルスクリプトファイルからスクリプトを実行する方法は?

C ++でシェルスクリプトを適切に実行する方法

信頼できるシェルからスクリプトを実行する方法

soapui groovyスクリプトからシェルスクリプトを実行する方法は?

シェルスクリプトからcスクリプトを実行する

シェルスクリプトから改行でPythonスクリプトを実行する

シェルスクリプトから相対パスシェルスクリプトを実行する

bash / linuxでシェルスクリプトを並行して実行する

TOP 一覧

  1. 1

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    Ansibleで複数行のシェルスクリプトを実行する方法

  4. 4

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  8. 8

    Chromeウェブアプリのウェブビューの高さの問題

  9. 9

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  10. 10

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  11. 11

    Reactでclsxを使用する方法

  12. 12

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  13. 13

    MLでのデータ前処理の背後にある直感

  14. 14

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

  15. 15

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  16. 16

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  17. 17

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  18. 18

    テキストフィールドの値に基づいて UIslider を移動します

  19. 19

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  20. 20

    PowerShellの分割ファイルへのヘッダーの追加

  21. 21

    ソートされた検索、ターゲット値未満の数をカウント

ホットタグ

アーカイブ