问题标签 [sigfpe]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 当我运行这个 C++ 代码时,我在 Codechef 上得到了运行时错误“SIGFPE”。如何解决这个问题?
/* 当我运行这个 C++ 代码时,我在 Codechef 上得到了运行时错误“SIGFPE”。如何解决这个问题?
解释
测试用例1:最佳填充是[5,0,5,0,5,0,5,0,5,0]
测试用例 2:最佳填充是 [6,6,5,6,6,0,6,6]
测试用例 3:最佳填充是 [2,1,2]。*/
c - 是否可以通过 SIGFPE FPE_INTOVF 在 C (POSIX/Linux) 中捕获整数溢出异常?
我觉得这是一个愚蠢的问题,但我发现关于该主题的信息为零(不是这里也不是任何地方),所以这是问题:
上下文(您可能已经知道):SIGFPE
异常和si_code
字段
在 POSIX/Linux 中,我们有一种特殊的信号称为SIGFPE
(尽管它的名字,它同时用于浮点和整数算术错误)。SIGFPE
当我们为using注册一个信号处理程序时sigaction()
,我们的处理程序还会收到一个名为的字段,该字段si_code
解释了SIGFPE
引发特定异常的原因。例如,其中一个可能的si_code
值是 ,FPE_INTDIV
您可以通过除以 来快速测试int
它0
。
问题:那怎么FPE_INTOVF
办?
我的问题是关于一个特定的si_code
,那就是FPE_INTOVF
。此代码描述为Value signalling integer overflow in case of SIGFPE signal
.
问题是我从未遇到过引发此信号的示例,也没有找到使操作系统引发此类信号的方法:当我在 C 中进行整数溢出时,不会SIGFPE
引发异常。但是FPE_INTOVF
for 的值SIGFPE
是一种暗示,它可能会在整数溢出的情况下使主机抛出(就像它已经对整数除以零所做的那样)。
问题:
FPE_INTOVF
无法使用吗?它是否只是一种信号类型的占位符,没有符合 POSIX 的操作系统曾经实现过?或者是否可以指示操作系统在整数溢出的情况下抛出这种信号?
我真的对FPE_INTOVF
使用sigaction()
.
PS:我认识到无符号整数溢出在技术上不是 C 中的错误(它在 C 中根本不存在,因为所有无符号整数算术都有“包装”行为),但有符号整数溢出确实是未定义的行为,所以我希望处理FPE_INTOVF
后者。
c - 为什么浮点错误消息未在 stderr 上打印?
我正在使用 java 应用程序运行 c 语言代码java.lang.ProcessBuilder
。如果此 c 语言代码产生任何输出和错误,我可以通过process.getInputStream()
和读取这些process.getErrorStream()
。但在某些情况下(当退出代码 = 136 或 139 时),例如如果代码执行失败floating point error
,我在进程的错误流中没有收到任何错误。因此,我尝试直接在 shell 上运行我的 c 语言代码,并将 stderr 和 stdout 重定向到单独的文件。代码.c
我正在运行的命令:
如您所见,上面的错误仅在 shell 上打印,但不重定向到err.log
. 此外,err.log 中没有任何内容。我的问题是为什么这不在 stderr 流中打印?根据我的理解,如果它没有在 stderr 中打印,我将无法通过 process.getErrorStream 读取它。无论代码执行生成的错误消息是什么,我都想将其展示给最终用户。