作者bu884 (揚揚)
看板Programming
標題[問題] linux使用exec()用wine進行pipe
時間Tue Sep 8 19:35:51 2020
各位好,小弟現在有一個測試檔案Project.exe,執行時需要輸入一個字串後便會創建該字
串名的檔案
我先以wine64在linux上執行,是成功的
https://i.imgur.com/oga2Tvf.jpg
在搭配pipe (將要輸入的字串,此字串為test11111.dat放進123.dat裡)
因此在terminal輸入 wine64 Project1.exe < 123.dat
就會生成test11111.dat
到這邊也沒問題
然而在搭配fork()及execlp時總是無法成功
https://i.imgur.com/HNdBvJK.jpg
我的問題是不知道要把 < 123.dat放在哪邊才會成功
以下為失敗嘗試
1.放在32行,但報錯說wine抓不到檔案
https://i.imgur.com/IdWOPyA.jpg
2.放在exelcp函數裡,但執行後依舊在等我輸入參數,沒有pipe進去
https://i.imgur.com/4fMlZCK.jpg
拜託各位大神幫幫艱困研究生QQ,搞好久了...
我可以請你喝個飲料或吃飯報答QQQQ
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.28.73.17 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1599564953.A.3B7.html
推 LPH66: exec* 系列無法用 shell 指令重導向 106.1.234.196 09/08 23:38
→ LPH66: 你要自己 open 開好, dup2 給 fd 0 再 exec 106.1.234.196 09/08 23:38
→ LPH66: 因為 exec* 會取代你目前執行的程式 106.1.234.196 09/08 23:39
→ LPH66: 所以 dup2 到自己身上再 exec 就會繼承下去 106.1.234.196 09/08 23:39
→ LPH66: 這裡有個類似的答案是回給輸出重導向的 106.1.234.196 09/08 23:40
→ LPH66: 因為他是輸出所以是 dup2 到 fd 1 106.1.234.196 09/08 23:40
→ LPH66: 那你是輸入所以要 dup2 到 fd 0 106.1.234.196 09/08 23:40
→ bu884: 感謝L大 搞出來了! 非常感謝!! 39.11.100.107 09/09 11:44