在C语言中使用不同的基础知识,我发现了一个错误,到目前为止,在网络上找不到该错误的答案。
在Windows 10中的cmd提示符下使用TCC:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main(int argc, char **argv) {
abort(); //or assert()
return 0;
}
该问题首先出现在assert()
中的一些伪表达式(如assert(1==0);
)中,该表达式调用abort()
。在abort()
之前的其余代码只是带有几个printfs
的sizeof
的列表,在我添加assert
/abort
之前,没有任何问题。程序将在应有的位置终止。然后,我无法编写(重新编译)或删除.exe。在任务列表中查找,该程序被列出与运行次数相同的次数。似乎卡在了“某处”。 %ERRORLEVEL%
给出3。我必须以管理员特权对其执行任务杀死。(我在gcc上的Ubuntu上尝试了代码,效果很好。)
最佳答案
我卸载了ZoneAlarm,一切恢复正常。看来,默认情况下,此防火墙可以保持命令提示符.exe处于 Activity 状态,该命令提示符在退出时返回一个值(return exit abort assert)。
关于c - C程序abort()使.exe访问在终止后被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64190298/