2017-07-10 59 views
0

我想用spawnl恢復DOS終端會話我的應用程序已完成後,我做了以下內容:spawnl和模式命令

static char* pszMode = "mode.com"; 
    int intRC = spawnl(P_WAIT, pszMode, pszMode, "co80", NULL); 
    char szCOM2setup[80]; 
    sprintf(szCOM2setup, "%s:9600,n,8,1", clsPort::mpcszCOM2); 
    intRC = spawnl(P_WAIT, pszMode, pszMode, szCOM2setup, NULL); 

mpcszCOM包含COM2

在這兩種情況下INTRC包含-1,我單步執行,看起來這些命令沒有正確執行,我沒有做什麼?

我在嵌入式PC104平臺上使用ROM-DOS版本6.22。

我已經perrror檢查和使用STRERROR,實際的錯誤是:

No such file or directory 

但是,爲什麼?在啓動應用程序之前設置路徑,並且可以通過命令行在與應用程序相同的文件夾中訪問mode.com。

嘗試使用spawnlp而不是spawnl,沒有更好的同樣的錯誤。

+1

當'spawnl'函數失敗時返回'-1',是否設置'errno'?你有沒有檢查'errno'在失敗(可能是使用['perror'](http://en.cppreference.com/w/c/io/perror))? –

+0

是的,在這兩種情況下errno都包含2,這是什麼意思? – SPlatten

+1

我不知道。錯誤編號不是C++規範的一部分。使用'perror'打印關於錯誤的可讀字符串。 –

回答

0

由於我不明白,即使路徑設置正確,應用程序返回「沒有這樣的文件或目錄」,所以我修改了應用程序以包含路徑,這解決了問題。