gpt4 book ai didi

c++ - 有没有比 system() 更好的方法来在 C++ 中执行命令?

转载 作者:可可西里 更新时间:2023-11-01 09:31:36 24 4
gpt4 key购买 nike

我有一个 C++ Windows 服务,当我调用 system() 函数来执行命令时有时会崩溃。我已经在 Windows 命令行中运行了命令的确切文本,它运行得很好,但由于某种原因,它在运行 system() 时失败了。

更糟糕的是,我似乎无法获得有关 system() 失败原因的任何信息。似乎没有引发异常,因为我正在执行 catch(...) 并且没有任何内容被捕获。我的服务刚刚停止运行。我知道是对 system() 的调用失败了,因为我在调用之前和之后都添加了日志信息,而之后的任何内容都不会记录任何内容。

那么,有没有其他方法可以执行我的命令?至少,如果出现问题,可以给我一些信息,或者至少让我处理异常之类的东西。

最佳答案

我相信 system() 在技术上是 C 标准库的一部分,因此不会抛出异常。您应该能够检查返回代码或 ERRNO 变量以获得有关所发生情况的一些信息。这MSDN链接包含有关 Windows 上可能的返回码的一些信息。

我还看到 system() 由于其他外部原因(例如病毒扫描程序)而失败,因此您也可以调查一下。

我不知道有什么更好的方法来运行 shell 命令,但我可能是错的。

编辑:如果它似乎仍然无缘无故崩溃,您可以尝试使用 process monitor看看在较低层次上发生了什么。由于进程监视器的输出可能有点让人不知所措,我喜欢使用的一个技巧是在调用 system() 之前添加一条语句,以打开一个不存在的文件,如“C:\MARKER.TXT"或其他东西,然后您可以在进程监视器输出中搜索文件名,然后立即查看可能与问题有关的条目。

关于c++ - 有没有比 system() 更好的方法来在 C++ 中执行命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4060625/

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