2011-03-18 11 views
0

나는 오래 전부터 실행 연산자를 접했을 때 당신이 프로가 생각하는 것에 관심을 가졌지 만 보거나 사용하는 것이 더 깔끔하고 깨끗하다고 ​​생각했지만 실행 연산자 나 빌드 인을 사용하는 것의 차이점이 있습니다 이전에 사용 된 적이없는 exec() 또는 system()과 같은 PHP 함수?PHP의 시스템 실행 연산자

//execution operator 
<?php 
    echo '<pre>'; 
    echo `netstat -a`; 
    echo '</pre>' 
?> 



<?php 
echo '<pre>'; 
echo system('netstat -a'); 
echo '</pre>' 
?> 

답변

1

백틱 연산자는 shell_exec과 동일합니다. system/exec/shell_exec/passthru 등의 명령에는 약간의 차이가 있습니다. 자세한 내용은 the manual을 참조하십시오. 당신이 찾고있는 것이 shell_exec의 행동이라면 백틱 연산자는 괜찮습니다.

1

전적으로 사용되는 용도에 따라 다릅니다.

다른 프로그램에 대한 간단한 쉘 아웃이고 stdout으로 인쇄 된 것이 필요하다면 백틱이 정상입니다. @ deceze의 게시물은 어떻게 작동하는지에 대해 자세히 설명합니다.

그러나 다른 프로그램과 상호 작용할 수있는보다 강력한 수준이 필요한 경우 아무 것도 proc_open을 초과하지 않습니다. 프로그램의 stdin, stdoutstderr을 사용할 때 streams의 모든 기능을 사용할 수 있습니다.

+0

그래 난 간단한 원격 명령 스크립트 주위에 재생 만든 사람들이 요법 복잡한 파이프를 사용하여 스트림 이유, 궁금 사촌에 대한 그래서 간단한 명령 출력하는 다시 브라우저로 돌아가는 결과는 충분합니다. 감사 –

1

exec()은 약간의 잘못된 이름입니다. 실제 syscall은 실행중인 프로그램을 종료하고 다른 프로그램을 실행하여이를 대체합니다. 그러나 PHP는 장면 뒤에서 포크를 수행하므로 system()과 거의 동일하게 작동합니다.

동작의 차이는 system은 결과를 버퍼링하지 않는다는 것입니다. 하지만 어쨌든 PHP에서 완성 된 결과를 얻을 수 있음을 거의 알 수 없습니다. CLI 응용 프로그램에서만 대부분 중요합니다. 낮은 레벨의 C 배경

: Difference between "system" and "exec" in Linux?