- ベストアンサー
単純なシェルとは?
- 「単純なシェル」とは、C言語で実装されたプログラムの一種です。
- このプログラムは、ループ構造を利用して操作を繰り返し、コマンドの実行を行います。
- 具体的には、プロンプトの表示やコマンドの読み取り、子プロセスの生成と実行を行います。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
#include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/wait.h> void type_prompt(void) { printf("$ "); } void read_command(char *command, char *params) { char *p; static char buf[BUFSIZ]; fgets(buf, BUFSIZ, stdin); sscanf(buf, "%s %[^\n]", command,params); } int main(void) { pid_t pid; int status; char command[BUFSIZ], params[BUFSIZ]; while (1) { type_prompt(); read_command(command, params); pid = fork(); if (pid < 0) { printf("Unable to fork\n"); continue; } if (pid != 0) { wait(&status); } else { execve(command, params, 0); } } } -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- この最小限の実装では、コマンドはフルパスで打たねばなりませんし、環境変数もありません。 でも、 /bin/date などと打つとコマンドが実行できることが分かります。