라이브러리
[PHP] proc_open - 명령을 실행하고 입출력을 위한 파일 포인터를 엽니다.
proc_open 이란?
PHP의 proc_open 함수는 프로세스 생성을 위한 함수입니다. 이 함수를 사용하여 새로운 프로세스를 생성하고, 프로세스와 통신할 수 있습니다. proc_open 함수는 exec, shell_exec, system 함수와 달리 프로세스에 대한 제어를 제공합니다.
proc_open 함수의 매개변수
proc_open 함수의 매개변수는 다음과 같습니다.
- `command`: 생성할 프로세스의 명령어입니다.
- `descriptorspec`: 프로세스와 통신할 데스크립터의 설정입니다.
- `pipes`: 프로세스와 통신할 데스크립터의 배열입니다.
- `flags`: 프로세스 생성 옵션입니다.
- `process_attributes`: 프로세스 속성입니다.
- `env`: 환경 변수입니다.
proc_open 함수의 반환값
proc_open 함수는 다음과 같은 반환값을 제공합니다.
- `resource`: 생성된 프로세스의 리소스입니다.
- `pipes`: 프로세스와 통신할 데스크립터의 배열입니다.
proc_open 함수의 예제
# 예제 1: 프로세스 생성
#hostingforum.kr
php
$descriptorspec = array(
0 => array("pipe", "r"), // stdin
1 => array("pipe", "w"), // stdout
2 => array("pipe", "w") // stderr
);
$process = proc_open('ls -l', $descriptorspec, $pipes);
if (is_resource($process)) {
while (!feof($pipes[1])) {
echo fread($pipes[1], 1024);
}
fclose($pipes[1]);
proc_close($process);
} else {
echo "프로세스 생성 실패";
}
# 예제 2: 프로세스와 통신
#hostingforum.kr
php
$descriptorspec = array(
0 => array("pipe", "r"), // stdin
1 => array("pipe", "w"), // stdout
2 => array("pipe", "w") // stderr
);
$process = proc_open('php', $descriptorspec, $pipes);
if (is_resource($process)) {
fwrite($pipes[0], '<?php echo "Hello World!"; ?>');
fclose($pipes[0]);
while (!feof($pipes[1])) {
echo fread($pipes[1], 1024);
}
fclose($pipes[1]);
proc_close($process);
} else {
echo "프로세스 생성 실패";
}
# 예제 3: 프로세스 속성 변경
#hostingforum.kr
php
$descriptorspec = array(
0 => array("pipe", "r"), // stdin
1 => array("pipe", "w"), // stdout
2 => array("pipe", "w") // stderr
);
$process = proc_open('php', $descriptorspec, $pipes);
if (is_resource($process)) {
// 프로세스 속성 변경
$process_attributes = array(
'pid' => 1234,
'uid' => 1000,
'gid' => 1000
);
proc_set_process_title($process, 'my_process');
proc_set_process_name($process, 'my_process');
proc_terminate($process);
proc_close($process);
} else {
echo "프로세스 생성 실패";
}
참고
- `proc_open` 함수는 PHP 4.3.0부터 사용할 수 있습니다.
- `proc_open` 함수는 프로세스 생성에 사용할 수 있는 다양한 옵션을 제공합니다.
- `proc_open` 함수는 프로세스와 통신할 데스크립터의 설정을 제공합니다.
- `proc_open` 함수는 프로세스 속성을 변경할 수 있습니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.