fork父子进程执行顺序

使用一段代码来检查父子进程执行顺序

<?php
$str = "hello world!" . PHP_EOL;
// 派生一个子进程,子进程会复制主进程中的上下文
// pcntl_fork 函数在主进程中返回子进程的进程ID,在子进程返回0,失败在主进程返回-1
$pid = pcntl_fork();
// 这里开始的代码,会被主进程、子进程共同执行
echo $str;
if($pid > 0) {
    echo "我是主进程,我的pid是" . getmypid() . ' -- 子进程的pid是 ' . $pid . PHP_EOL;
    echo "我要先休息2秒" . PHP_EOL;
    sleep(2);
    echo "2秒到了,主进程休息完成!主进程结束!" . PHP_EOL;
} elseif($pid == 0) {
    echo "我是子进程,我的pid是". getmypid() . PHP_EOL;
    echo "我只休息1秒" . PHP_EOL;
    sleep(1);
    echo "1秒到了,子进程休息完成!子进程结束!" . PHP_EOL;
}else{
    echo "我是主进程,开启子进程失败" . PHP_EOL;
}

 如果不休息的话,父进程执行完毕,开始子进程,所以可以用这样的方法使得父进程等子进程执行完毕自己再结束

posted @ 2020-05-27 16:12  李照耀  阅读(2471)  评论(0编辑  收藏  举报