
SwooleProcess::exec를 사용하여 자식 프로세스와 통신하는 방법은 다음과 같습니다.
1. 자식 프로세스에서 write() 메서드를 호출하여 부모 프로세스에 데이터를 전송할 수 없습니다. write() 메서드는 자식 프로세스에서만 호출할 수 있습니다.
2. 자식 프로세스에서 부모 프로세스에 데이터를 전송하려면, 자식 프로세스에서 exit() 메서드를 호출하여 프로세스를 종료하고, 부모 프로세스에서 pcntl_get_last_error() 함수를 사용하여 자식 프로세스의 종료 코드를 가져올 수 있습니다.
3. 자식 프로세스와 부모 프로세스 간의 통신을 위해 사용할 수 있는 다른 방법은 다음과 같습니다.
* 자식 프로세스에서 pipe() 함수를 사용하여 파이프를 열고, 파이프를 통해 데이터를 전송할 수 있습니다. 부모 프로세스에서는 pipe() 함수를 사용하여 파이프를 열고, 자식 프로세스에서 전송한 데이터를 읽을 수 있습니다.
* 자식 프로세스에서 socket() 함수를 사용하여 소켓을 열고, 소켓을 통해 데이터를 전송할 수 있습니다. 부모 프로세스에서는 socket() 함수를 사용하여 소켓을 열고, 자식 프로세스에서 전송한 데이터를 읽을 수 있습니다.
예를 들어, 자식 프로세스에서 파이프를 열고, 부모 프로세스에서 파이프를 열어 자식 프로세스에서 전송한 데이터를 읽는 예제는 다음과 같습니다.
#hostingforum.kr
php
// 자식 프로세스
$pipe = fopen("php://fd/0", "r");
fwrite($pipe, "Hello from child process!");
fclose($pipe);
// 부모 프로세스
$pipe = fopen("php://fd/0", "r");
echo fread($pipe, 1024);
fclose($pipe);
또한, 자식 프로세스에서 소켓을 열고, 부모 프로세스에서 소켓을 열어 자식 프로세스에서 전송한 데이터를 읽는 예제는 다음과 같습니다.
#hostingforum.kr
php
// 자식 프로세스
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock, "localhost", 12345);
socket_write($sock, "Hello from child process!");
socket_close($sock);
// 부모 프로세스
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($sock, "localhost", 12345);
socket_listen($sock);
$connection = socket_accept($sock);
echo socket_read($connection, 1024);
socket_close($connection);
socket_close($sock);
위 예제는 자식 프로세스와 부모 프로세스 간의 통신을 위해 사용할 수 있는 방법을 보여줍니다.
2025-05-08 08:53