作者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://webptt.com/cn.aspx?n=bbs/Programming/M.1599564953.A.3B7.html
1F:推 LPH66: exec* 系列无法用 shell 指令重导向 106.1.234.196 09/08 23:38
2F:→ LPH66: 你要自己 open 开好, dup2 给 fd 0 再 exec 106.1.234.196 09/08 23:38
3F:→ LPH66: 因为 exec* 会取代你目前执行的程式 106.1.234.196 09/08 23:39
4F:→ LPH66: 所以 dup2 到自己身上再 exec 就会继承下去 106.1.234.196 09/08 23:39
5F:→ LPH66: 这里有个类似的答案是回给输出重导向的 106.1.234.196 09/08 23:40
7F:→ LPH66: 因为他是输出所以是 dup2 到 fd 1 106.1.234.196 09/08 23:40
8F:→ LPH66: 那你是输入所以要 dup2 到 fd 0 106.1.234.196 09/08 23:40
9F:→ bu884: 感谢L大 搞出来了! 非常感谢!! 39.11.100.107 09/09 11:44