2010-02-16 90 views
1
if(system("tail -500 log.txt") == -1) 
    { 
     //Error calling tail.exe on log 
     //errno is a system macro that expands int returning 
     //the last error. strerror() converts the error to it's 
     //corresponding error message. 
     printf("Error calling tail.exe with system(): %s",strerror(errno)); 

    } 

System()與log.txt的
調用Tail.exe所有都在同一目錄中可執行文件調用它。
獲取錯誤ENOENT- No such file or directory
此外,指定的路徑的一切,相同的錯誤。system()函數無法找到可執行文件的可能原因是什麼?

任何意見表示讚賞,謝謝。

+0

也許它期望包括.exe在內的完整路徑? – Anycorn 2010-02-16 17:27:15

+0

不,'system'按照OS命令解釋器(在Windows上應該是CMD.EXE)。這絕對不需要完整的路徑,包括.EXE – MSalters 2010-02-17 10:14:35

回答

5

從你鏈接上system()文檔:

ENOENT 命令解釋器無法找到。

所以問題不是它找不到tail.exe,問題是它找不到命令解釋器。這表明更大的事情出錯了。我們需要更多信息來診斷真正的問題。還從同一頁:

系統函數傳遞命令 命令解釋,這 執行字符串作爲 操作系統命令。系統 指的是定位 命令解釋程序文件(在Windows NT中命名爲CMD.EXE的文件 以及後面的 )的COMSPEC和PATH 環境變量。如果命令爲NULL,則 函數只是檢查是否存在命令解釋程序 。

這表明有幾條調查途徑:system(NULL)返回什麼?當程序運行時,COMSPECPATH環境變量的值是多少?

+0

我完全錯過了,謝謝,至少我現在在正確的道路上......謝謝 – 2010-02-16 17:32:37

+0

看起來他們是相同的運行或不。 COMSPEC路徑看起來是正確的:C:\ WINDOWS \ System32 \ cmd.exe但是,PATH指向我PC上隨機應用程序的目錄。 PATH假設是什麼?系統(NULL)= 0 – 2010-02-16 17:55:32

+0

您是否偶爾在64位系統上運行?如果是這樣,取決於你可能需要使用Wow64 COMSPEC的二進制文件。 – 2010-02-16 18:10:02

1

您可能會嘗試系統(「cmd tail -500 log.txt」) - 這在某些窗口框中是必需的。

+0

同樣的錯誤,謝謝。 – 2010-02-16 17:59:30

+0

然後你創建了一個調用系統的工作程序嗎?嘗試一下,如果你還沒有。 – 2010-02-16 19:06:11

相關問題