forkで子プロセスを生成し、そこでexeclを使ってコマンドを実行する。
#include <stdio.h>
#include <stdlib.h>
#include wait.h>
#include <unistd.h>
int main(){
char command[256],line[256];
int st;
static char prompt[64] = "> ";
fprintf(stderr,"%s",prompt);
while(fgets(line,sizeof(line),stdin) !=
NULL){
if(sscanf(line,"%s",command)
> 0){
if(fork() == 0){
if(execl(command,command,NULL)
< 0){
exit(EXIT_FAILURE);
}
}
else{
wait(&st);
}
}
fprintf(stderr,"%s",prompt);
}
return EXIT_SUCCESS;
}
atmark@atde3:~/work$
gcc -o nsh nsh.c
atmark@atde3:~/work$
./nsh
>
/bin/ls
lv lv.c
lv2 lv2.c nsh
nsh.c nsh.c~
0 件のコメント:
コメントを投稿