看板 C_and_CPP 關於我們 聯絡資訊
我想請問一下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
MOONRAKER:Windows下可以直接執行 *.o !? 06/08 17:17
hsnucsc:喔 那是我編譯出來的檔案 06/08 17:21
hsnucsc:cmd下, 打test.o, 就可以執行了, 請問哪裡錯了嗎? 謝謝 06/08 17:23
stonehomelaa:你是在 windows 還是 freebsd ?? 06/08 17:34
hsnucsc:上面的code是在Windows下跑 =>error, 不過我也試了類似的 06/08 17:40
zlw:你要在windows下跑,要確認路徑正確,而且是可執行檔如exe,com 06/08 17:43
hsnucsc:有試過在cmd下面打 test.o , 是可以執行的 06/08 17:51
hsnucsc:excuse me 我修改一下文章 06/08 18:35
原本我是打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)
ledia:真神奇 06/08 18:41
LPH66:我提一點...就我所知 VC 的實作是 _spawn 出一個 process 06/08 19:29
LPH66:來跑 cmd.exe 讓它執行指令 06/08 19:30
LPH66:我不確定 g++ 的實作是如何 不過也許是實作問題... 06/08 19:30
MOONRAKER:原來現在可以直接執行.com,.exe以外的東東,真的很神奇 06/08 19:51
zlw:試了一下,把PE格式的*.exe改副檔名成*.o,再用命令直譯器執行 06/08 21:00
zlw:還是可以跑,只不過檔案總管點兩下才會因為副檔名而不能執行 06/08 21:00
zlw:另外,system("")裡面就算路徑錯亂打也不會傳回-1 (VC編譯的) 06/08 21:01
zlw:不過Windows應該沒有g++,只有mingw32-g++,你該不會是在Linux 06/08 21:04
zlw:去編譯執行檔test.o拿到Windows用吧? 06/08 21:04
zlw:測出來,如果 1.o 的原始碼最後是return -1; 則system("1.o") 06/08 21:33
zlw:就會傳回這個-1值 06/08 21:34