2012-11-02 61 views
1

我有一個Fortran程序,我想從php調用一些通過網站傳遞的參數。如何從PHP程序向fortran發送信息?

我有php的表單設置,但我不知道如何將信息發送給fortran。目前,該信息被輸入到Fortran程序通過提示:

write(\*,'("give input image name:",$)') 
read(\*,\*) iminput 

所以我想送一個陣列,或類似的東西,所以我可以有

CHARACTER(LEN=*) :: iminput 

iminput = post(1) 

或類似的東西。

+0

我們正在進入過去的馬蒂。 – wesside

回答

5

如果您有一個程序需要標準輸入而不是命令行參數,您仍然可以使用管道自動傳遞信息。例如,如果程序詢問你的姓名和年齡,你可以在從殼一氣呵成養活這些,而不必等待它要問,這樣做:

echo -e "user1795485\n1 day" | theprogram 

對於你的問題,你需要能夠運行你的程序,寫入其標準輸入,然後從其標準輸出中讀迴響應。我認爲proc-open會讓你做到這一點。我認爲,該頁面上的示例1正是您想要的。基本上,你可以調用proc-open,然後寫出Fortran程序期望的信息,關閉寫入句柄,然後回讀結果。請注意,fortran程序不需要以任何方式進行修改。

+0

好吧,我正在測試這個,還有一些額外的問題:如果我運行magic.e運行fortran程序,我會這樣做嗎? '$ process = proc_open('magic.e',$ descriptorspec,$ pipes,$ cwd,$ env);' 其他所有內容都是相同的? 另外,我在哪裏把信息傳遞給magic.e?那是'fwrite($ pipes [0],'my image.png');'? 感謝您的回覆。 – user1795486

+0

您寫入$ pipes [0]的內容將是fortran程序使用'read(*,fmt)'讀取的內容。 Fortran程序使用'write(*,fmt)'寫入的內容是關閉$ pipes [0]後,您將能夠從$ pipes [1]中讀取的內容。 – amaurea

+0

謝謝,它工作! – user1795486

相關問題