【发布时间】:2020-05-14 11:59:53
【问题描述】:
我正在从事一个与嵌入式系统相关的项目,想知道在您的程序中使用函数 exit(0) 是否是一种好习惯。
if (Req[0] == '0')
{
puts("Emergency stop button operated\n");
**exit(0);**
}
【问题讨论】:
-
这个问题的答案取决于您的系统和项目。当然
exit是标准C 函数,这意味着它可用于标准C 实现。它是否在您的 C 实现中可用,使用它是否适合满足您项目的目标和要求,以及它将在系统中产生什么影响,取决于您的 C 实现、您的项目和那些系统。如果您不知道,您应该询问指定项目要求的人员。 -
一般来说,当您的目标是一个裸机环境(没有操作系统)时,您通常从不终止您的应用程序。那是因为,如果没有操作系统,除了首先调用
main的启动代码之外,您实际上无法返回 *to* 。如果main返回时,启动代码的行为完全取决于平台(它可能会在无限循环中停止,它可能会执行软重置,谁知道) -
@EricPostpischil 符合标准的独立实现不需要提供 stdlib.h。见 C17 4/6。
-
另外,由于您的代码 sn-p 提到了紧急停止按钮,我很确定您的应用程序应该以适当的方式处理此类事件,我无法想象只是终止应用将是适当的。例如,想象一个控制重型机械的伺服控制器。如果用户猛踩紧急停止,那么伺服控制器必须对 1) 尽快和 2) 以明确定义的方式做出反应。在这种情况下,终止应用程序相当于说“哎呀,我不知道该怎么办”,并且很可能会为此付出生命的代价。
-
当您在嵌入式系统上调用 exit 时会发生什么?
标签: c embedded coding-style exit