C++ ShellExecute();

不知道這問題在po文是否妥當,若不妥請版主告知,我再刪除

最近研究寫 code 寫了兩個程式
就用A.exe (屬於MPI程式) B.exe(屬於GPU CUDA程式)來代表說明好了
因為想結合MPI+GPU CUDA 來分散式處理 減少運算時間

在A.exe code裡面寫了
ShellExecute(NULL,TEXT( "open"), TEXT("C:\B.exe"), NULL, NULL,
SW_SHOWNORMAL);

來執行A.exe間接開啟B.exe執行
但由於 B.exe寫在一個A.exe code迴圈裡 所以會跳出視窗很多

請問一下 ShellExcute(); 可以宣告我的B.exe直接輸出在一個文字檔output.txt嗎!?

還是...在 B.exe code 裡面宣告 輸出在一個文字檔output.txt !?
又該如何寫!?

不知道高手們是否了解我問題!?

或者我有哪些觀念不正確的話 請高手們糾正我
小弟我是寫程式新手 >"<
謝謝指教
2010-03-24 0:41 發佈
文章關鍵字 C++ ShellExecute
可以改用 popen() 或 system()

用 system() 的話,就可以 system("b.exe > b.txt");
這樣就會把 b 的所有輸出都導向到 b.txt 了。

一隻猴子隨機在打字機鍵盤上按鍵,最後必然可以打出法國國家圖書館中的每本書。
似乎要用ShellExecute
因為ShellExecute可以在裡面輸入參數
http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx

B.exe未來要輸入一些參數

by the way
今天用一個簡單的程式(無輸入參數)來測試system("b.exe > b.txt")
去run A.exe 會出現 :

b.exe 不是內部或外部命令
可執行的程式或批次檔
程序無法存取檔案,因為檔案正由另一格程序使用

這是怎回事!?
從錯誤訊息看來,或許是找不到 b.exe 在哪兒,請加上完整路徑,如 system("c:\\b.exe > b.txt");
如果 A.exe 裡有很多 thread ,而 thread 裡都會呼叫到 b.exe ,那麼,建議把 b.txt 換成時間或流水號的檔名,避免發生寫入衝突。

用ShellExecute應該也是可以,不過我印象中 ShellExecute 不能帶參數。

或許你可以改用 WinExec http://msdn.microsoft.com/en-us/library/ms687393%28VS.85%29.aspx 或者是 popen (我不知道 Windows 有沒有此函數,這個很方便)
再不行,研究一下 CreateProcess 吧,這個可以讓你完整控制一個外部的 process,甚至不需要另外寫檔案,就可以把外部 process 的 stdout 接到自己程式來。
一隻猴子隨機在打字機鍵盤上按鍵,最後必然可以打出法國國家圖書館中的每本書。
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?