[問題] "system" function的使用

看板C_and_CPP (C/C++)作者 (hsnugo)時間16年前 (2009/06/08 17:05), 編輯推噓6(6014)
留言20則, 6人參與, 最新討論串1/1
我想請問一下system()這個function的使用方法 #include<cstdio> #include<cstdlib> int main() { int flag; char* command = "C:\\learnC\\test.exe"; flag = system(command); if( flag ) printf("%s ERROR\n", command); return 0; } 上面是我在Windows上測試system()的code command的部分, 我也試過用相對路徑 command = "test.exe" 但是把flag印出來後, flag 總是等於 -1 manual上對system的部分敘述是: return -1 if an error occurred when invoking fork(2) orwaitpid(2) 但是我想不出error是怎麼造成的 我也在FreeBSD的機器上測試, 不管是絕對路徑或相對路徑都可以執行system() 想請問有哪裡是我可能遺漏掉的嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.90.94

06/08 17:17, , 1F
Windows下可以直接執行 *.o !?
06/08 17:17, 1F

06/08 17:21, , 2F
喔 那是我編譯出來的檔案
06/08 17:21, 2F

06/08 17:23, , 3F
cmd下, 打test.o, 就可以執行了, 請問哪裡錯了嗎? 謝謝
06/08 17:23, 3F

06/08 17:34, , 4F
你是在 windows 還是 freebsd ??
06/08 17:34, 4F

06/08 17:40, , 5F
上面的code是在Windows下跑 =>error, 不過我也試了類似的
06/08 17:40, 5F

06/08 17:43, , 6F
你要在windows下跑,要確認路徑正確,而且是可執行檔如exe,com
06/08 17:43, 6F

06/08 17:51, , 7F
有試過在cmd下面打 test.o , 是可以執行的
06/08 17:51, 7F

06/08 18:35, , 8F
excuse me 我修改一下文章
06/08 18:35, 8F
原本我是打g++ -Wall -o test.o test.cpp 現在改成 g++ -Wall -o test.exe test.cpp, 避免掉版友說的問題, 還是return -1 ※ 編輯: hsnucsc 來自: 140.113.90.94 (06/08 18:42)

06/08 18:41, , 9F
真神奇
06/08 18:41, 9F

06/08 19:29, , 10F
我提一點...就我所知 VC 的實作是 _spawn 出一個 process
06/08 19:29, 10F

06/08 19:30, , 11F
來跑 cmd.exe 讓它執行指令
06/08 19:30, 11F

06/08 19:30, , 12F
我不確定 g++ 的實作是如何 不過也許是實作問題...
06/08 19:30, 12F

06/08 19:51, , 13F
原來現在可以直接執行.com,.exe以外的東東,真的很神奇
06/08 19:51, 13F

06/08 21:00, , 14F
試了一下,把PE格式的*.exe改副檔名成*.o,再用命令直譯器執行
06/08 21:00, 14F

06/08 21:00, , 15F
還是可以跑,只不過檔案總管點兩下才會因為副檔名而不能執行
06/08 21:00, 15F

06/08 21:01, , 16F
另外,system("")裡面就算路徑錯亂打也不會傳回-1 (VC編譯的)
06/08 21:01, 16F

06/08 21:04, , 17F
不過Windows應該沒有g++,只有mingw32-g++,你該不會是在Linux
06/08 21:04, 17F

06/08 21:04, , 18F
去編譯執行檔test.o拿到Windows用吧?
06/08 21:04, 18F

06/08 21:33, , 19F
測出來,如果 1.o 的原始碼最後是return -1; 則system("1.o")
06/08 21:33, 19F

06/08 21:34, , 20F
就會傳回這個-1值
06/08 21:34, 20F
文章代碼(AID): #1ABDHkG_ (C_and_CPP)
文章代碼(AID): #1ABDHkG_ (C_and_CPP)