찾다

 >  Q&A  >  본문

ubuntu - pcntl 子进程引用并修改父进程数据的问题??

代码:

$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(),没有发生任何变化!
                    // 子进程无法修改主进程中的数据。
                    // 子进程中该如何修改主进程中的数据,实现数据共享??
}

结果:

进程间该如何进行数据交流??

怪我咯怪我咯2774일 전778

모든 응답(3)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-04-24 09:14:06

    자식 프로세스가 생성된 후에는 상위 프로세스의 변수 데이터와 분리되었습니다. 하위 프로세스가 상위 프로세스 변수를 수정하도록 하려면 프로세스 간 통신을 통해 해당 코드를 구현해야 합니다. 스스로요. 물론 공유 메모리를 통해서도 변수를 공유할 수 있습니다.

    회신하다
    0
  • PHPz

    PHPz2017-04-24 09:14:06

    프로세스 간 통신에는 다양한 방법이 있습니다. 가장 일반적인 것은 TCP입니다.

    회신하다
    0
  • 迷茫

    迷茫2017-04-24 09:14:06

    저는 방금 pcntl을 배우고 있었는데 프로세스 간 통신에 대해서도 생각했습니다. 메시지 대기열을 사용하는 방법이 너무 복잡하지 않다고 생각하여 코드에 몇 문장을 추가했습니다. 그것을 시도하고 서로를 도울 수 있습니다.

    으아악

    회신하다
    0
  • 취소회신하다