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;
}

 如果不休息的話,父進程執行完畢,開始子進程,所以可以用這樣的方法使得父進程等子進程執行完畢自己再結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM