「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つの単語を含むコマンドを受け入れるようにこれを変更するにはどうすればよいですか?助けてくれてありがとう。