我正在创建一个关于如何用C编程的演示文稿,因为我对C很新,我想检查一下我的假设是否正确,以及我缺少什么。
每个C程序都必须有一个入口点,以便操作系统知道从哪里开始执行。这由main()
函数定义。此函数始终具有return
值,无论是用户定义还是隐式return 0;
。
由于这个函数是return
,我们必须定义它返回的东西的类型。
这是我的理解开始变得朦胧的地方......
int
?int main()
的地址做了什么?segfault
或其他一些错误导致程序没有达到return
声明时,该地址会发生什么变化?答案 0 :(得分:4)
每个程序都以退出代码终止。此退出代码由return
的{{1}}确定。
程序通常返回0表示成功,1表示失败,但您可以选择将退出代码用于其他目的。
答案 1 :(得分:2)
1和2是因为语言是这样说的。
对于3:大多数操作系统都有某种进程管理,并且进程通过调用合适的操作系统服务来退出,这需要将状态值作为参数。例如,DOS和Linux都有“退出”系统调用,它接受一个数字参数。
对于4:从上面开始,操作系统通常还允许进程响应于接收到未被忽略或处理的信号而死亡。在一个体面的操作系统中,您应该能够区分进程是否已正常退出(并检索其退出状态)或由于信号而被杀死(并检索信号编号)。例如,在Linux中,wait
系统调用提供此服务。
退出状态和信号为进程提供了一种简单的机制,使其能够以通用方式相互通信,而无需自定义通信基础结构。使用没有这种设施或类似设施的操作系统会更加繁琐和繁琐。