popen 함수
(PHP 4, PHP 5, PHP 7, PHP 8)
popen — 프로세스 파일 포인터를 엽니다.
설명
popen(string $command
, string $mode
): resource|false
command
에 의해 주어진 명령을 분기하여 실행되는 프로세스에 대한 파이프를 엽니다.
매개변수
command
- 명령
mode
- 모드. 읽기는 'r', 쓰기는 'w'입니다.
Windows에서 popen()은 기본적으로 텍스트 모드로 설정됩니다. 즉, 파이프에 쓰거나 파이프에서 읽는 모든 \n 문자는 \r\n으로 변환됩니다. 이것이 원하지 않는 경우
mode
를 각각 'rb' 및 'wb'로 설정하여 바이너리 모드를 시행할 수 있습니다.
반환 값
fopen()에 의해 반환된 것과 동일한 파일 포인터를 반환합니다. 단, 단방향(읽기 또는 쓰기에만 사용할 수 있음)이고 pclose()로 닫아야 한다는 점만 다릅니다.
이 포인터는 fgets(), fgetss() 및 fwrite()와 함께 사용할 수 있습니다. 모드가 'r'이면 반환된 파일 포인터는 명령의 STDOUT과 같고, 모드가 'w'이면 반환된 파일 포인터는 명령의 STDIN과 같습니다.
오류가 발생하면 false
를 반환합니다.
Examples
예제 #1 popen() 예제
<?php
$handle = popen("/bin/ls", "r");
?>
실행할 명령을 찾을 수 없으면 유효한 리소스가 반환됩니다. 이상하게 보일 수 있지만 의미가 있습니다. 셸에서 반환된 모든 오류 메시지에 액세스할 수 있습니다.
예제 #2 popen() 예제
<?php
error_reporting(E_ALL);
/* Add redirection so we can get stderr. */
$handle = popen('/path/to/executable 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>
노트
메모: 양방향 지원(양방향)을 찾고 있다면 proc_open()을 사용하십시오.
기타
- pclose() - 프로세스 파일 포인터를 닫습니다
- popen() - 프로세스 파일 포인터를 엽니다.
- proc_open() - 명령을 실행하고 입출력을 위한 파일 포인터 열기