Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 关于bash、进程调度和printf()_C_Bash_Process - Fatal编程技术网

C 关于bash、进程调度和printf()

C 关于bash、进程调度和printf(),c,bash,process,C,Bash,Process,主要代码如下: int main(){ pid_t pid=fork(); if(pid==0){ printf("a\n"); exit(0); } else printf("b\n"); return 0; } b aimager@cong-Ubuntu:/mnt/LinuxDatum/WorkSpace/Ubuntu$ a 结果如下: int main(){ pid_t pid=fork()

主要代码如下:

int main(){
    pid_t pid=fork();
    if(pid==0){
        printf("a\n");
        exit(0);
    }
    else
        printf("b\n");
    return 0;
}
b
aimager@cong-Ubuntu:/mnt/LinuxDatum/WorkSpace/Ubuntu$ a
结果如下:

int main(){
    pid_t pid=fork();
    if(pid==0){
        printf("a\n");
        exit(0);
    }
    else
        printf("b\n");
    return 0;
}
b
aimager@cong-Ubuntu:/mnt/LinuxDatum/WorkSpace/Ubuntu$ a

问题是:为什么?”aimager@cong-Ubuntu:/mnt/LinuxDatum/WorkSpace/Ubuntu$“前端输出在前台执行了一个进程,所以shell在请求下一个命令之前等待它的返回。此进程将启动另一个子进程,对于shell来说,它是后台进程。当初始进程完成时,shell不知道它从未启动过的任何子进程的任何信息,会在命令提示符下请求您执行下一个命令(在您的情况下,它是username@hostname:/current/working/directory$),但在此后台进程之后,决定打印一些数据。提示符已经存在,没有人会删除它,所以这些数据只是附加在这里

它只会影响你看待事物的方式。Shell没有得到这个数据,所以它没有被添加到命令字符串中,它只是以这种方式显示。若你们想看到清晰的线条,你们可以按回车键强制重新提示

您可能会看到与此相同的结果

$ (echo foo; echo bar) &

&
是命令shell在后台启动进程-在不等待上一个命令完成的情况下请求下一个命令)

如果您询问的是序列,它可能并不总是正确的,子进程可能会先退出,父进程也可能先退出。