Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
Unix 为什么';给定进程是否异步运行?_Unix_Process_Fork - Fatal编程技术网

Unix 为什么';给定进程是否异步运行?

Unix 为什么';给定进程是否异步运行?,unix,process,fork,Unix,Process,Fork,我正在main中运行.c文件中的以下代码 int main(void){ int id = fork(); int n; if(id == 0){ // child process n = 1; }else{ n = 6; } for(size_t i=n; i<n+5; i++){ printf("%ld ", i); } printf("

我正在
main
中运行
.c
文件中的以下代码

int main(void){
    int id = fork();
    int n;

    if(id == 0){
      // child process
      n = 1;
    }else{
      n = 6;
    }

    for(size_t i=n; i<n+5; i++){
        printf("%ld ", i);
    }
    printf("/n");

    return 0;
}
也就是说,先运行父进程,然后再运行子进程。我已经运行了20多次,结果总是一样的。我是否错过了有关
fork
的内容


我在x86-64 Linux机器上

如果添加
fflush(stdout)
printf之后(“%ld”,i),您是否看到正在交错的输出?每次更改后运行时,输出是否略有不同?是否应该立即打印给定值而不是缓冲(我猜默认情况下是
printf
buffers)?在使用
fflush
时,10次执行中的1次(大致)会改变顺序,但大多数情况下
fflush
不会有任何区别。是的,当
printf
看到其输出是一个终端窗口时,它会将输出视为行缓冲,并且在被告知输出换行之前不会输出任何内容(
\n
)性格
fflush
将输出其缓冲区中当前的任何内容。因此,您可能会看到一些交错,这取决于系统上运行的其他内容。希望有人能根据典型的Linux调度器所做的工作来解释这个顺序。谢谢你的帮助!了解了“fflush”。
6 7 8 9 10
1 2 3 4 5