라이브러리

[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` 함수는 프로세스 속성을 변경할 수 있습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 314 페이지

검색

게시물 검색