如何解决如何让我的程序连续运行,同时返回子进程?
当我使用 fork() 函数时,我让我的子进程使用 execlp() 函数。因为它不适用于连续的 while 循环。 (我使用的是Linux环境)
所以应该fork child 来负责exec() 调用,而parent 应该负责循环和输入逻辑。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <string.h>
int main(){
char *cmd[] = {"pwd","ls","date","ps","top"};
int i;
printf("0=pwd,1=ls,2=date,3=ps,4=top:\n");
printf("Please print your input: ");
scanf("%d",&i);
int The_fork = fork();
if(The_fork == 0){
execlp(cmd[i],cmd[i],NULL);
printf("command no found\n");
}else{
wait(0);
while(1){
int status;
waitpid(The_fork,&status,0);
printf("\n");
char *cmd[] = {"pwd","top"};
int i;
printf("0=pwd,4=top:\n");
printf("Please print your input: ");
scanf("%d",&i);
//execlp(cmd[i],NULL);
}
return 1;
}
return 0;
}
这是我的输出:
(父进程连续打印,但我不知道如何让子进程在第一次打印后继续执行。)
解决方法
感谢大家的评论,我让它工作了。
这就是我所做的。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <string.h>
int main(){
while(1){
char *cmd[] = {"pwd","ls","date","ps","top"};
int i;
printf("0=pwd,1=ls,2=date,3=ps,4=top:\n");
printf("Please print your input: ");
scanf("%d",&i);
int The_fork = fork();
if(The_fork == 0){
execlp(cmd[i],cmd[i],NULL);
printf("command no found\n");
}else{
wait(0);
}
printf("\n");
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。