代码:
$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(),没有发生任何变化!
// 子进程无法修改主进程中的数据。
// 子进程中该如何修改主进程中的数据,实现数据共享??
}
结果:
进程间该如何进行数据交流??
자식 프로세스가 생성된 후에는 상위 프로세스의 변수 데이터와 분리되었습니다. 하위 프로세스가 상위 프로세스 변수를 수정하도록 하려면 프로세스 간 통신을 통해 해당 코드를 구현해야 합니다. 스스로요. 물론 공유 메모리를 통해서도 변수를 공유할 수 있습니다.
프로세스 간 통신에는 다양한 방법이 있습니다. 가장 일반적인 것은 TCP입니다.
저는 방금 pcntl을 배우고 있었는데 프로세스 간 통신에 대해서도 생각했습니다. 메시지 대기열을 사용하는 방법이 너무 복잡하지 않다고 생각하여 코드에 몇 문장을 추가했습니다. 그것을 시도하고 서로를 도울 수 있습니다.
으아악