PHP調用控制台EXE程式的步驟

來源:互聯網
上載者:User
PHP調用控制台EXE程式的方法

1. 可以使用的函數有:exec、system、passthru、popen及反單引號五種,區別如下:

system() 輸出並返回最後一行shell結果。

exec() 不輸出結果,返回最後一行shell結果,所有結果可以儲存到一個返回的數組裡面。

passthru() 只調用命令,把命令的運行結果原樣地直接輸出到標準輸出裝置上。

以上三個函數的相同點:都可以獲得命令執行的返回值。

popen()是以管道方式開啟,只能讀或只能寫,無法同時讀寫,也無法得到執行的返回值。

反單引號不輸出結果,可以儲存所有結果,無法得到執行的返回值。

2. 針對EXE程式中有輸入情況的處理辦法(main參數除外,因為可以放在命令列中,這裡要處理的是cin、scanf這些需要在運行時輸入的參數):

C++程式如下:test.cpp

#include

using namespace std;

int main()

{

int a, b;

cin >> a >> b;

cout << a + b << endl;

}

那麼在PHP中可以簡單使用echo管道即可:

system("echo 1 2 | test.exe");

然而,如果C++程式中有以行為單位的字串輸入,例如:

#include

#include

using namespace std;

int main()

{

string str;

while(getline(cin, str))

{

cout << str << endl;

}

}

若需要輸入多行,則若在Linux平台,可以用echo -e管道來解決:

system("echo -e ‘str1\nstr2’ | test.exe");

如果在Windows平台,echo沒有-e參數,就必須一次執行兩次或多次echo,如下:

system("( echo str1 & echo str2 ) | test.exe");

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.