gpt4 book ai didi

c - 使用 fork 和 exec 执行程序

转载 作者:行者123 更新时间:2023-11-30 14:21:21 28 4
gpt4 key购买 nike

我是 C 编程新手。我正在尝试使用 fork()exec()waitpid() 运行由用户指定的路径给出的程序命令。我已经尝试让它正确运行几个小时了,但我不断收到错误,我不知道如何排除故障,一旦解决一个错误,就会出现新的错误。我想知道是否有人可以帮助我理解为什么我的实现不能顺利进行?

非常感谢

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main(void) {
char command1[256], command2[256], path[556];
printf("# ");
scanf("%s", command1);
scanf("%s", command2);
scanf("%s", path);
if(strcmp(command1,"quit")==0)
exit(0);
else if(strcmp(command1, "run")==0 && strcmp(command2, "command")==0){

printf("%s", path);

pid_t process;

process = fork();

//fork error
if (process < 0){
perror("fork");
exit(0);
}
else if (process > 0){ //this is the parent process
execl(path, "sh" , "-c", ":ls -l *.c", 0);
}
else {//this is the child process
waitpid(process); //waits until the program terminates
}

}




return 0;

}

最佳答案

在我看来,你们已经交换了东西。使用fork/exec,通常在子进程中执行exec,在父进程中执行waitpid。

关于c - 使用 fork 和 exec 执行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14782919/

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