gpt4 book ai didi

c++ - 如何确定输入(stdin)已损坏?

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:10 24 4
gpt4 key购买 nike

我正在开发一个用于核心转储处理的工具。使用 sysctl 我将其设置为获取工具输入的核心转储。一切都运转良好。但今天我面临着(我不知道为什么)coredump 损坏的情况。当我将常规文件设置为核心转储目标时 - 它不会出现。所以 - 我认为它由于某种原因被破坏了。当我设置我的工具 tee 时 - 没有结果。

所以。我想确定这种情况(如果可能的话)并记录它而不是生成损坏的文件。

我正在使用 ::read(STDIN_FILENO,buff, buffSize) 来获取数据。最后read只返回0。我想指出 0 何时表示文件结束以及何时表示管道损坏。

最佳答案

根据程序中的错误,任何事情都可能出错,并且没有可靠的方法来检测什么出了问题,甚至是否出了什么问题。

一旦程序执行未定义的行为或类似的行为,所有的赌注都会失败,您能做的最好的事情就是希望某些报告 channel 仍然可靠地工作。通常,您可以信任操作系统内核编写的核心/小型转储来可靠地捕获崩溃时程序的状态。但是,如果您的程序损坏了堆栈或做了其他可怕的事情,那么您从这些转储中获得的堆栈跟踪仍然可能接近无法使用。

关于c++ - 如何确定输入(stdin)已损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38593792/

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