亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

ubuntu - pcntl 子進程引用并修改父進程數據的問題??

瀏覽:112日期:2024-07-07 15:51:59

問題描述

代碼:

$data = array();$p = pcntl_fork();if ($p === -1) { exit(’創建進程失敗!’ . PHP_EOL);} else if ($p === 0) { // 修改主進程中的數據 $data = array(’cxl’ , ’ys’);} else { pcntl_wait($status);// 子進程返回后,查看數據變動 print_r($data); // 結果 array(),沒有發生任何變化! // 子進程無法修改主進程中的數據。 // 子進程中該如何修改主進程中的數據,實現數據共享??}

結果:

ubuntu - pcntl 子進程引用并修改父進程數據的問題??

進程間該如何進行數據交流??

問題解答

回答1:

子進程創建后,已經與父進程的變量數據脫鉤,如果要實現子進程修改父進程變量,需要通過進程間通訊并自行實現相關代碼來完成。當然,也可以通過共享內存的方式實現變量的共享。

回答2:

進程間通信可用的方法多了去了。最常見的,TCP。

回答3:

剛好在學習pcntl,也想到進程間通信的事情,搜到的其中一個可用方法-使用消息隊列,覺得不太復雜,于是在你代碼上加了幾句,可以試試,互助共勉。

// 創建key和消息隊列$msg_key = ftok(__FILE__, ’a’);$msg_queue = msg_get_queue($msg_key);$data = array();$p = pcntl_fork();if ($p === -1) { exit(’創建進程失敗!’ . PHP_EOL);} else if ($p === 0) { // 修改主進程中的數據 // 將修改的數據發送到消息隊列 msg_send($msg_queue, 1, array(’cxl’ , ’ys’)); exit();} else { pcntl_wait($status);// 子進程返回后,查看數據變動 // 接收隊列中的數據 msg_receive($msg_queue, 1, $msg_type, 1024, $msg); // 銷毀隊列 msg_remove_queue($msg_queue);$data = $msg; print_r($data); }

相關文章:
主站蜘蛛池模板: 亚洲情a成黄在线观看 | 91精品国产免费网站 | 91欧美激情一区二区三区成人 | 成人免费视频69 | 99视频在线精品 | 国产午夜精品一区二区 | 欧美日韩一区二区中文字幕视频 | 国产三a级日本三级日产三级 | 美女视频黄a | 成 人色 网 站 欧美大片在线观看 | 国产亚洲欧洲精品 | 一级黄色录相片 | 久久久精品国产 | 9久久免费国产精品特黄 | 99视频在线免费 | 夜色邦合成福利网站 | 一级毛片成人免费看免费不卡 | 乱码在线中文字幕加勒比 | 国产亚洲精品久久久久久 | 曰本黄大片| 久久免费视频网 | 12一15女人a毛片 | 日韩一区二区不卡 | 午夜男人女人爽爽爽视频 | 亚洲加勒比| 韩国美女毛片 | 国产成人免费永久播放视频平台 | 亚洲精品一区二区在线播放 | 欧美特黄一级高清免费的香蕉 | 亚欧成人 | 欧美很黄视频在线观看 | 亚洲精品日韩一区二区 | 日本不卡免费高清视频 | 国产高清美女一级a毛片久久w | 波多野结衣在线视频免费观看 | 欧美另类极品 | 国产小呦| 亚洲人成网站在线在线 | 国产成人精品.一二区 | 免费观看亚洲 | 免费一级片网站 |