【发布时间】:2017-07-10 13:50:17
【问题描述】:
我想在我的应用程序完成后使用 spawnl 恢复 DOS 终端会话,我正在执行以下操作:
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,没有更好的相同错误。
【问题讨论】:
-
当
spawnl函数失败时是否设置errno(返回-1)?您是否检查过errno失败的原因(可能是通过使用perror)? -
是的,两种情况下errno都包含2,这是什么意思?
-
我不知道。错误编号不是 C++ 规范的一部分。使用
perror打印关于错误的可读字符串。 -
@Someprogrammerdude,你不是说 strerror(errno) 吗?
-
您可以使用
strerror获取您打印的可打印字符串。或者您使用perror直接打印 字符串(到stderr)。无论哪种方式都可以了解更多关于正在发生的事情。