LInux中的进程

lik*_*eIT 3 linux linux-kernel

每个人我对程序有一些疑问:如果我有一些程序:

int main()
{
int value = 0;
...
return value;
}
Run Code Online (Sandbox Code Playgroud)

我的操作系统创建了新的进程,它使用execv()来运行这个程序,当return value我将值转移回进程时,我的问题是这个进程将如何结束?它是否执行exit(value),当value是我程序中的值时?提前感谢您的帮助

gre*_*rep 7

返回main()基本上等同于调用exit(),并启动正常终止过程.

正常终止会导致以下操作:

  1. 使用atexit或on_exit函数注册的函数按其注册的相反顺序调用.此机制允许您的应用程序指定自己的"清理"操作,以便在程序终止时执行.通常,这用于执行诸如将程序状态信息保存在文件中或解锁共享数据库中的锁之类的操作.

  2. 关闭所有打开的流,写出任何缓冲的输出数据.此外,删除了使用tmpfile函数打开的临时文件.

  3. _exit() 被叫,终止程序.

最后,系统在进程终止后执行常规清理(文件关闭,退出代码报告,子处理终止或重新分配给init...)请参见终止内部