#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unist.h>
#include <stdlib.h>
#define LINE_MAX 255
#define ARG_MAX 10
#define SH_PROMPT "next> "
int run_command(char *[]);
int getline(char *);
void parse_line(char *, char*[]);
int main(void)
{
char line[LINE_MAX+1];
char *argbuf[ARG_MAX+!];
int temp;
do{
printf(SH_PROMPT); fflush(stdout);
if ((temp = getline(line)) != -1){
parse_line(line, argbuf);
run_command(argbuf);
}
} while (temp != -1);
return 0;
}
int run_command(char *command[]){
pid_t child;
pid_t c;
if ((child = fork()) == 0){
execvp(command[0], command);
fprintf(stderr, "Child process could not do execvp.\n");
exit(1);
}
else{
if(child == (pid_t)(-1)){
fprintf(stderr, "Fork failed - Use spoon. \n");
exit(1);
}
else {
c = wait(NULL);
return 0;
}
}
}
新しいプロセスを作成し、その子プロセスで任意のコマンドを実行するプログラムを作成したいと考えています。一方、子プロセスが終了すると、親プロセスは、関連するコマンドが正常に完了したかどうかを示す 1 行を標準出力に出力する必要があります (「Command /bin/who has completed successfully」など)。すべての子プロセスが終了すると、親プロセスは「All done, bye-bye!」と出力します。それ自体が終了する前に。コードの補完とエラーチェックについて助けが必要です。助けてください、ありがとう!