2014-02-25 79 views
0

我試圖在我的Visual C++程序中運行ping無法在Visual C++系統調用的路徑中找到可執行文件

在命令行,鍵入where ping返回C:\Windows\System32\PING.exe。此外,當我從命令行發出ping時,它可以從任何目錄中運行。在我看來,這是在我的道路上。

然而,當我嘗試運行下面的C++程序,我得到一個錯誤。

#include <process.h> 
#include <iostream> 

int main() 
{ 
    int pingretval = system("ping stackoverflow.com > /dev/null"); 
    std::cout << "Ping returns " << pingretval << std::endl; 
    return 0; 
} 

控制檯輸出:

The system cannot find the path specified. 
Ping returns 1 

我怎樣才能讓system()拿起正確的可執行文件?

編輯:我在system參數改變pingC:\\Windows\\System32\\PING.exe,但它仍然給出了同樣的錯誤。

編輯2:我是不是完全真實的,SO;我真誠的道歉。在我的系統調用中,我重定向到了Linux風格/dev/null。刪除該位後,我忘記了重新編譯,而Windows文件系統中的/dev/null的缺失是導致「無法找到指定路徑」錯誤的原因。通過刪除> /dev/null,這工作得很好。

+0

也許你的'PATH'環境變量設置不正確。用'path'替換'ping'來看看它是什麼。 –

+0

如果您輸入「cmd/C ping stackoverflow.com」,會發生什麼情況? – manlio

+0

@CareyGregory:'system(「path」)'顯示'C:\ Windows \ system32'確實在路徑中。 @manlio:這並沒有改變輸出。 –

回答

0

請勿重定向到Windows的/dev/null

不幸的是,我在實際應用中,我無法改變的系統調用參數,它進來的ping -c 3 stackoverflow.com > /dev/null形式。我試圖通過製作一個ping來忽略-c交換機(僅Linux),但我忘了更改Linux風格的重定向。

+0

所以近到目前爲止。如果微軟使用'null'而不是'nul',它可以在兩個平臺上工作,只需在Windows上創建'dev'目錄即可。 –

相關問題