如何将fork作为后台进程运行?

问题描述

我正在制作一个简单的shell,我需要能够运行诸如sleep 5 &之类的命令。 &告诉它作为后台进程运行,因此当子进程在后台“睡眠”时,我可以输入其他命令,例如cd someDirectory

我已经对其进行了设置,以使其能够正确地分叉,但是如何设置它,以使其在给定&时可以在后台运行子级?

我对WNHONANG进行了很多研究,并且做了诸如waitpid(pid,&status,WNHONANG)之类的事情,但这使它一无所有。

这是我的代码

int executeCommand(char **args){
    pid_t pid;
    int status;
    
    pid = fork();
    //error in fork
    if(pid < 0){
        printf("Fork Failed\n");
        exit(1);
    }
    //child process
    if(pid == 0){
        //child executes process
        execvp(args[0],args);
        
        //if execution fails
        exit(1);
    }
    //parent process
    else{
        waitpid(pid,0);
    }
    //Do I need this?
    kill(pid,SIGKILL);
    return 1;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)