#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;
}
}
}
我想编写一个程序来创建一个新进程,并且在该子进程中,它应该执行任何命令。同时,当子进程终止时,父进程应在标准输出上打印一行,说明相关命令是否成功完成(如“命令/bin/who已成功完成”)。一旦它的所有子进程都终止了,父进程应该打印“All done, bye-bye!” 在它本身终止之前。我需要关于完成和错误检查的代码帮助。请帮忙,谢谢!