• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「単純なシェル」について)

単純なシェルとは?

このQ&Aのポイント
  • 「単純なシェル」とは、C言語で実装されたプログラムの一種です。
  • このプログラムは、ループ構造を利用して操作を繰り返し、コマンドの実行を行います。
  • 具体的には、プロンプトの表示やコマンドの読み取り、子プロセスの生成と実行を行います。

質問者が選んだベストアンサー

  • ベストアンサー
  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.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 などと打つとコマンドが実行できることが分かります。

関連するQ&A