execvp()を使用したシェルコマンドの実行

nightfury94:

Linuxシェルのように動作するプログラムを書きたいのですが。「ls」コマンドを実行する小さなプログラムを書くことから始めました。私が理解できないことは、シェルが行うように、プログラムがコマンドに応答するようにするにはどうすればよいかです。(例:cat、cd、dir)。

#include <iostream>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#define MAX 32
using namespace std;

int main() {
    pid_t c; 
    char s[MAX];
    int fd[2];
    int n;

    pipe(fd);
    c = fork();

    if(c == 0) {
        close(fd[0]);
        dup2(fd[1], 1);
        execlp("ls", "ls", "-l", NULL);
        return 0;
    } else {
        close(fd[1]);
        while( (n = read(fd[0], s, MAX-1)) > 0 ) {
            s[n] = '\0';
            cout<<s;
        }
        close(fd[0]);
        return 0;
    }

    return 0;
}

ユーザーが入力したものをプログラムに読み取らせ、それを渡すにはどうすればよいですかexeclp(または同じことを行う類似のプログラム)。

ジャンバティストユネス:

シェルは基本的に次のことを行います。

  1. stdinから行を読み取ります
  2. その行を解析して単語のリストを作成します
  3. フォーク
  4. 次に、シェル(親プロセス)は子の最後まで待機し、子は実行して、入力行から抽出された単語のリストで表されるコマンドのコードを実行します。
  5. その後、シェルはステップ1で再始動します。

最初に非常に単純なシェルを作成します。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Cのシェルコマンド(Execvpを使用したエラー)

分類Dev

suを使用したbashサブシェルコマンドの実行順序

分類Dev

Python-指定されたシェルを使用したシェルコマンドの実行

分類Dev

シェル出力リダイレクトを使用したexecvpシェルコマンドが機能しない

分類Dev

シェルの作成-system()またはexec()を使用してコマンドを実行しますか?

分類Dev

C ++はシェルでタイマーを使用して複数のコマンドを実行します

分類Dev

Pythonを使用してシェルメールコマンドを実行する

分類Dev

bashシェルでsudoを使用してコマンドを実行します

分類Dev

qmakeを使用してシェルコマンドを実行します

分類Dev

$ _GET ['request']を使用してPHPシェルコマンドを実行します

分類Dev

シェルコマンドを実行し、戻りを待たない

分類Dev

Pythonはシェルで複数行のコマンドを実行します

分類Dev

PL / SQLからメールを送信するためのシェルコマンドを実行します

分類Dev

LinuxシェルでJavaを介して実行したい1つのコマンドの問題

分類Dev

bashシェルでコマンドを実行した後、出力の色をリセットします

分類Dev

PHP system()関数-コマンドを実行するためにシェルを使用しますか?

分類Dev

Pythonを使用してシェルで実行されたコマンドと引数を取得する方法

分類Dev

mongosコマンドを使用してmongoシェルを実行する方法は?

分類Dev

php-shell_execを使用してシェルコマンドを実行する

分類Dev

execを使用してC ++でシェルコマンドを実行する

分類Dev

Pythonのパイプを使用したシェルコマンド

分類Dev

VisualStudioからCommonLispを実行するためのシェルコマンド

分類Dev

SSH / Paramikoで別のシェルを使用してコマンド/スクリプトを実行します

分類Dev

Paramikoを使用してCiscoシェルに書き込まれたコマンドは実行されません

分類Dev

シェルを呼び出した後に後続のコマンドを実行する方法

分類Dev

jmeterのbeanshellを介してシェルコマンドを実行する

分類Dev

シンボルを含むPythonを介したSQLコマンドの実行

分類Dev

コマンドの実行がシェルで失敗したかどうかを検出する方法は?

分類Dev

`find`と` xargs`を使用してシェルスクリプトで複数のコマンドを実行する

Related 関連記事

  1. 1

    Cのシェルコマンド(Execvpを使用したエラー)

  2. 2

    suを使用したbashサブシェルコマンドの実行順序

  3. 3

    Python-指定されたシェルを使用したシェルコマンドの実行

  4. 4

    シェル出力リダイレクトを使用したexecvpシェルコマンドが機能しない

  5. 5

    シェルの作成-system()またはexec()を使用してコマンドを実行しますか?

  6. 6

    C ++はシェルでタイマーを使用して複数のコマンドを実行します

  7. 7

    Pythonを使用してシェルメールコマンドを実行する

  8. 8

    bashシェルでsudoを使用してコマンドを実行します

  9. 9

    qmakeを使用してシェルコマンドを実行します

  10. 10

    $ _GET ['request']を使用してPHPシェルコマンドを実行します

  11. 11

    シェルコマンドを実行し、戻りを待たない

  12. 12

    Pythonはシェルで複数行のコマンドを実行します

  13. 13

    PL / SQLからメールを送信するためのシェルコマンドを実行します

  14. 14

    LinuxシェルでJavaを介して実行したい1つのコマンドの問題

  15. 15

    bashシェルでコマンドを実行した後、出力の色をリセットします

  16. 16

    PHP system()関数-コマンドを実行するためにシェルを使用しますか?

  17. 17

    Pythonを使用してシェルで実行されたコマンドと引数を取得する方法

  18. 18

    mongosコマンドを使用してmongoシェルを実行する方法は?

  19. 19

    php-shell_execを使用してシェルコマンドを実行する

  20. 20

    execを使用してC ++でシェルコマンドを実行する

  21. 21

    Pythonのパイプを使用したシェルコマンド

  22. 22

    VisualStudioからCommonLispを実行するためのシェルコマンド

  23. 23

    SSH / Paramikoで別のシェルを使用してコマンド/スクリプトを実行します

  24. 24

    Paramikoを使用してCiscoシェルに書き込まれたコマンドは実行されません

  25. 25

    シェルを呼び出した後に後続のコマンドを実行する方法

  26. 26

    jmeterのbeanshellを介してシェルコマンドを実行する

  27. 27

    シンボルを含むPythonを介したSQLコマンドの実行

  28. 28

    コマンドの実行がシェルで失敗したかどうかを検出する方法は?

  29. 29

    `find`と` xargs`を使用してシェルスクリプトで複数のコマンドを実行する

ホットタグ

アーカイブ