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() - 명령을 실행하고 입출력을 위한 파일 포인터 열기