gpt4 book ai didi

创建一个进程来执行任何命令

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:33 24 4
gpt4 key购买 nike

#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 已成功完成”)。一旦它的所有子进程都终止了,父进程应该打印“全部完成,再见!”在它自己终止之前。我需要有关完成和错误检查代码的帮助。请帮忙,谢谢!

最佳答案

首先,wait 函数会在等待时阻塞,所以第一部分(父级在子级退出时打印消息)应该非常简单。

至于退出前的打印,就这样吧。在 main 中的最终 return 0; 之前添加一个 printf 调用。

关于创建一个进程来执行任何命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19583221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com