【问题标题】:spawnl and mode commandsspawnl 和模式命令
【发布时间】: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)。无论哪种方式都可以了解更多关于正在发生的事情。

标签: c++ spawn pc104


【解决方案1】:

由于我不明白的原因,即使路径设置正确,应用程序返回“没有这样的文件或目录”,所以我修改了应用程序以包含路径,这解决了问题。

【讨论】:

    猜你喜欢
    • 2011-03-10
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2011-04-22
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多