gpt4 book ai didi

c++ - 在 C++ 中使用 Dos 命令时使用 GetLastError

转载 作者:行者123 更新时间:2023-11-28 00:56:45 24 4
gpt4 key购买 nike

所以我有一些代码使用 Dos 命令来尝试重命名文件夹。所以

system("rename C:\\Users\\me\\SecondDir NewDir);

所以这会尝试将 SecondDir 重命名为 NewDir。该位置已经有一个名为 NewDir 的文件夹,因此它应该会失败。确实如此。然后,我使用 GetLastError 获取返回的错误代码,以确保问题符合我的预期。但它只会返回 ERROR_NO_MORE_FILES。这不是我应该得到的错误,它是 ERROR_ALREADY_EXISTS。我假设这与使用系统命令有关?

编辑:我刚刚检查过,甚至在命令成功时返回 ERROR_NO_MORE_FILES。

最佳答案

GetLastError 不会返回有意义的值,除非在有文档说明的情况下。这不是其中之一 - 您获得的值(value)是无关紧要的,是为其他人准备的。

要从 C 重命名文件,您应该使用 C 运行时 rename 函数,而不是使用系统调用重命名实用程序。

GetLastError 仅在调用 Win32 函数后立即有意义,该函数被记录为使用 SetLastError 设置线程上次错误。 C 等效项是 errno,它适用于 C 函数。

rename 函数在失败时返回 -1 并设置 errno

例如:http://msdn.microsoft.com/en-us/library/zw5t957f(v=VS.80).aspx

关于c++ - 在 C++ 中使用 Dos 命令时使用 GetLastError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10787816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com