PHP借用$cmd運行程式後,怎麼關閉

來源:互聯網
上載者:User
PHP借用$cmd運行程式後,如何關閉?
我想用PHP運行某exe程式(不要CRON等排程器,PHP裡還有其他內容。這裡方便測試,以記事本為例),在其開啟3秒後,執行關閉。
如何操作?
是否可以調用工作管理員將其關閉?求解決代碼。謝謝。

PHP code



------解決方案--------------------
PHP code

------解決方案--------------------
popen — 開啟進程檔案指標

說明
resource popen ( string $command , string $mode )
開啟一個指向進程的管道,該進程由派生給定的 command 命令執行而產生。

返回一個和 fopen() 所返回的相同的檔案指標,只不過它是單向的(只能用於讀或寫)並且必須用 pclose() 來關閉。此指標可以用於 fgets(),fgetss() 和 fwrite()。

如果出錯返回 FALSE。

Note:

如果需要雙向支援,使用 proc_open()。



Example #1 popen() 例子

$handle = popen("/bin/ls", "r");
?>

Note:

如果未找到要執行的命令,會返回一個合法的資源。這看上去很怪,但有道理。它允許訪問 shell 返回的任何錯誤資訊:

error_reporting(E_ALL);

/* 加入重新導向以得到標準錯誤輸出 stderr。 */
$handle = popen('/path/to/spooge 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>



------解決方案--------------------
探討
PHP code

$handle = popen('C:\WINDOWS\system32\notepad.exe', "r");
pclose($handle);
?>

------解決方案--------------------
popen返回的是notepad.exe在php環境下的進程指標,這個指標只能用於讀取和輸出資料給notepad,pclose關閉的只是這個指標而不是notepad本身.

我也不清楚如何關閉notepad,但是我想應該從windows的編程基礎中尋找如何擷取工作管理員中的進程,然後用system函數去調用windows的關閉程式
------解決方案--------------------
popen是單向的,用proc_open吧
試試看
PHP code
/** * windows only */$descriptorspec = array(       0 => array("pipe", "r"),     1 => array("pipe", "w"));$cwd = 'C:\WINDOWS\system32';$process = proc_open('notepad.exe', $descriptorspec, $pipes, $cwd);$s          = proc_get_status( $process );//得到的資訊都是父進程cmd.exe的狀態,而非子進程notepad.exe的.所以不能直接kill掉這個process idsleep( 3 );exec('taskkill /PID '.$s['pid'] . ' /T'); //樹型刪除,刪除所有父進程與對應的子進程.原來以為子進程id必定大於父進程,寫了一通代碼,後來發現不是,且找到了這個命令proc_close( $process );
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.