看板 Programming 關於我們 聯絡資訊
各位好,小弟現在有一個測試檔案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: https://stackoverflow.com/a/20488645 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
bu884: https://i.imgur.com/sPzN5xB.jpg 39.11.100.107 09/09 11:44