您尚未登录。

#1 2018-10-20 12:24:59

apersonlikesc
兔子春
所在地: 喧闹之地
注册时间: 2018-01-21
帖子: 89
个人网站

fork()输出为什么是固定的值?

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(){
    int p1,p2;
    while((p1=fork())==-1);
    if(p1==0){
        putchar('b');
    }else{
        while((p2=fork())==-1);
        if(p2==0){
            putchar('c');
        }else{
            putchar('a');
        }
    }
    return 0;
}

输出的是abc
想问问,arch是怎么处理父进程与子进程的


越过山丘,遇见十九岁的我

离线

#2 2018-10-20 21:20:20

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: fork()输出为什么是固定的值?

不是固定的呀,只是 abc 的概率比较高。这个和进度调度有关。

离线

#3 2018-10-21 12:35:12

apersonlikesc
兔子春
所在地: 喧闹之地
注册时间: 2018-01-21
帖子: 89
个人网站

Re: fork()输出为什么是固定的值?

原来如此哦,我还以为是固定的,试了好多次都是同一个值
后来套了个循环直接死机了,我该怎么写,才可以让他多跑几次


越过山丘,遇见十九岁的我

离线

#4 2018-10-21 12:46:20

apersonlikesc
兔子春
所在地: 喧闹之地
注册时间: 2018-01-21
帖子: 89
个人网站

Re: fork()输出为什么是固定的值?

for((a=0;a<10000;a++))
do
        ./a.out
        sleep 1
        echo -e "\n"
done

发现不会在c里面写,就简单的写了这个 -.-


越过山丘,遇见十九岁的我

离线

页脚