0

「C/C ++でマイクロシェルを作成する」という課題があり、それが何を意味するのかを正確に理解しようとしています。私はこれまでにこのCコードを持っています:

#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <sstream>
#include <stdlib.h>
#include <sys/utsname.h>

int main(void)
{

char buf[1024];
pid_t pid;
int status;
printf("%% ");

while (fgets(buf,1024,stdin) != NULL)
{

    buf[strlen(buf) -1] =0; //remove the last character. Important!

    if ((pid = fork()) <0)
            printf("fork error");
    else if (pid==0)
    {       /* child */
            execlp(buf, buf, (char *) 0);
            printf("couldn't execute: %s", buf);

            exit(127);
    }//else if end

    /* parent */
    if ( (pid = waitpid(pid, &status, 0)) <0)
            printf("waitpid error");

    printf("%% ");
}//while end

exit(0);
}//main end

名前だけを使用して呼び出すことができる必要があります。したがって、私のプログラムの名前はprgm4.cppなので、これを実行できる必要があります。

%>prgm4
prgm4>(user enters command here)

これを行うには、コードに何を追加する必要がありますか?また、cat file.txtなどの2つの単語を含むコマンドを受け入れるようにこれを変更するにはどうすればよいですか?助けてくれてありがとう。

4

1 に答える 1

1

私があなたを正しく理解しているなら、あなたはファイルへのフルパスではなく、その名前でプログラムを実行する方法を尋ねているだけです。

$ prgm4 # You want this...
$ /path/to/my/program/prgm4 # ...Instead of this.

その場合、プログラム自体とは何の関係もありません。プログラムを$PATH変数内の場所(Linuxの/ usr / binなど)に移動するか、PATH変数を編集して、既に存在するディレクトリを含める必要があります。次に例を示します。

$ PATH="/path/to/my/program:$PATH"

詳細については、このスーパーユーザーの質問を参照してください。

于 2013-03-19T17:07:39.010 に答える