
pcntl_fork() 함수는 자식 프로세스를 생성하는 함수입니다. 부모 프로세스와 자식 프로세스 간의 통신을 위해, 다음 방법을 사용할 수 있습니다.
1. 파이프: 파이프를 사용하여 부모 프로세스와 자식 프로세스 간에 데이터를 전송할 수 있습니다. 예를 들어, 부모 프로세스가 자식 프로세스에게 데이터를 전송하고자 할 때, 파이프를 생성하고 자식 프로세스에게 파이프의 파일 디스크립터를 전송합니다. 자식 프로세스는 파이프를 통해 데이터를 읽어 들입니다.
#hostingforum.kr
php
$pipe = fopen("pipe", "r+");
$pid = pcntl_fork();
if ($pid == 0) { // 자식 프로세스
// 파이프를 통해 데이터를 읽어 들입니다.
$data = fread($pipe, 1024);
echo "자식 프로세스: $datan";
} else { // 부모 프로세스
// 파이프를 통해 데이터를 전송합니다.
fwrite($pipe, "Hello, World!n");
fclose($pipe);
}
2. 소켓: 소켓을 사용하여 부모 프로세스와 자식 프로세스 간의 통신을 할 수 있습니다. 예를 들어, 부모 프로세스가 자식 프로세스에게 데이터를 전송하고자 할 때, 소켓을 생성하고 자식 프로세스에게 소켓의 파일 디스크립터를 전송합니다. 자식 프로세스는 소켓을 통해 데이터를 읽어 들입니다.
#hostingforum.kr
php
$sock = socket_create(AF_UNIX, SOCK_STREAM, 0);
$pid = pcntl_fork();
if ($pid == 0) { // 자식 프로세스
// 소켓을 통해 데이터를 읽어 들입니다.
$data = socket_read($sock, 1024);
echo "자식 프로세스: $datan";
} else { // 부모 프로세스
// 소켓을 통해 데이터를 전송합니다.
socket_write($sock, "Hello, World!n");
socket_close($sock);
}
3. 파일: 파일을 사용하여 부모 프로세스와 자식 프로세스 간의 통신을 할 수 있습니다. 예를 들어, 부모 프로세스가 자식 프로세스에게 데이터를 전송하고자 할 때, 파일을 생성하고 자식 프로세스에게 파일의 이름을 전송합니다. 자식 프로세스는 파일을 읽어 들입니다.
#hostingforum.kr
php
$file = fopen("file.txt", "w");
$pid = pcntl_fork();
if ($pid == 0) { // 자식 프로세스
// 파일을 통해 데이터를 읽어 들입니다.
$data = file_get_contents("file.txt");
echo "자식 프로세스: $datan";
} else { // 부모 프로세스
// 파일을 통해 데이터를 전송합니다.
fwrite($file, "Hello, World!n");
fclose($file);
}
이러한 방법 중 하나를 사용하여 부모 프로세스와 자식 프로세스 간의 통신을 할 수 있습니다.
2025-07-29 19:19