1

私は C プログラミング言語が初めてで、自分で設定した演習をしようとしています。

私がやりたいことは、ユーザーが書いたコマンドを読み込んで実行できるようにすることです。私はまだこのためのコードを書いていないので、その方法が本当にわかりません。

これは基本的に私がやりたいことです:

ユーザー プロンプトを表示する (ユーザーが /bin/ls -al などのコマンドを入力するための) ユーザー入力を読み取って処理する

私は現在MINIXを使用して、何かを作成してOSを変更しようとしています。

ありがとう

4

3 に答える 3

0

シェルは、新しいプロセスでコマンドを実行します。それは一般的にどのように機能するかです:

while(1) {
    // print shell prompt
    printf("%s", "@> ");
    // read user command - you can use scanf, fgets or whatever you want
    fgets(buffer, 80, stdin);
    // create a new process - the command is executed in the new child process
    pid = fork();
    if (pid == 0) {
        // child process
        // parse buffer and execute the command using execve
        execv(...);
    } else if (pid > 0) {
        // parent process
        // wait until child has finished
    } else {
        // error
    }
}
于 2014-11-04T15:43:58.553 に答える
0

私はあなたに指示を与えます:

gets を使用して行を読み取ります: http://www.cplusplus.com/reference/cstdio/gets/

printfで表示できます

システムを使用して呼び出しを実行します: http://www.tutorialspoint.com/c_standard_library/c_function_system.htm

この関数について少し読んで、それらに慣れてください。

于 2014-11-04T15:43:19.083 に答える
0

これは私がこれまで持っている私のコードです:

含む

int main(void) {
    char *line = NULL;  
    size_t linecap = 0; 
    ssize_t linelen;    

    while ((linelen = getline(&line, &linecap, stdin)) > 0){
        printf("%s\n", line);
    }

}

これは明らかに実行を続け、CTRL-D を押すまで行を出力します。ユーザーが入力したコマンドを実行するには、どのようなコードを使用すればよいでしょうか?

于 2014-11-04T18:43:13.770 に答える