- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如维基百科所述 here :“在调用 spawn 时打开的文件在子进程中保持打开状态”。 (非常类似于exec())
好的,操作系统已经打开了一些文件并为我们新生的无意识进程做好了准备。假设我们的进程重新意识到那些先前打开的文件并最终决定终止;而像 C 这样的编程语言在终止之前需要一些内部进程清理。
我的问题是,这种清理会以任何方式影响那些打开的文件吗?据我所知,它们没有在任何地方注册,也没有在进程本身的任何地方注册。
答案应该以某种方式定义程序员在终止 spawn()ed 进程(甚至是 exec()ed 进程)时的行为。完全清理程序会以任何方式伤害 parent 吗? (例如通过删除临时文件),因此程序员不应该使用 _exit() 而不是 exit() 吗?
最佳答案
简短回答:否。 C 运行时不会关闭在进程退出时打开的文件句柄,因此您可以退出父进程或子进程而不必担心弄乱其他进程。
内核 负责在没有打开的引用时关闭文件句柄,这发生在内核销毁进程时。内核可以很好地处理这种情况。
关于c - 在 spawn() 之后使用 _exit() 或 exit()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5595013/
回答this question , 有人说要用 _Exit()和其他人说使用 _exit() .有人可以解释两者之间的区别(如果有的话),以及两者的起源吗? 最佳答案 直接来自手册页 here : T
多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束、在程序的某个地方用exit() 结束程序、用户通过Ctrl+C或Ctrl+break操
我想在 delphi xe3 中使用 c obj 文件。 链接 obj 文件时,显示此错误: `[dcc32 Error] Unit1.pas(149): E2065 Unsatisfied forw
我可以使用 atexit 或析构函数来确定我的应用程序上次终止是否是由于调用 exit() 所致。有什么方法可以确定我的应用程序上次终止是否是由于 _exit() 导致的? 最佳答案 来自man pa
我感兴趣的是我是否可以在 _exit(2) 调用中调用任意函数,这会绕过其他 Hook 架构,所以这对我来说似乎并不容易。 如果这是一个普通的 exit(3) 或 return 语句,显然可以通过 a
很抱歉重复一个已反复提出的问题,但我找不到具体提及内存问题的内容。如果一个进程以 _exit(0) 或 _Exit(0) 终止,它的内存块会丢失给操作系统吗?谢谢,-nuun 最佳答案 对于几乎所有不
我是C和Linux的新手,只是系统调用方面的一个问题: 那么,为什么_exit有一个下划线前缀而其他人没有? 最佳答案 系统调用_exit如此命名,以区别于库函数exit。 在大多数情况下,程序应使用
我一直在尝试使用 ARM mbed 库创建一个组织有序的 makefile 项目模板。我已经解决了一些问题(与头文件路径相关的 see this post)。但是,现在我遇到了链接器的问题。我的目标是
为什么它显示不同的输出???任何人都可以深入解释我。 1. #include #include int main (void) { printf ("Using exit ... \ n");
import os os.exit(0) 有没有办法在操作系统中导入特定模块,而不是导入整个模块? (这可以使我的程序在使用时更有效率。) 最佳答案 from os import _exit 此代码应
所以简短的总结是-我有一个程序递归搜索具有特定扩展名的文件。每次找到一个,它都会制作一个副本,对副本进行一些更改,创建一个补丁(通过使用 diff 和 execvp())并删除原始文件。 我遇到的问题
我想测试一个函数是否在失败时执行 os._exit(2)。我见过许多使用 SystemExit 的 sys.exit() 解决方案。我已经阅读了 Python3和 Python2文档,似乎 os._e
考虑这个代码片段: pid_t cpid = fork(); if (cpid == -1) { perror("fork"); exit(EXIT_FAILURE); } if (c
请看一下这个示例代码,它使用非常成熟的编程模式将 stdout 重定向到管道。 #include #include int main(int argc, char **argv) { in
我在看论文Size Is EverythingSize Is Everything使用内核 3.8.4 x64 nasm gcc-4.7.2 fedora 在 moretiny.asm 中输入 BIT
C99 提供了 _Exit 函数,它“立即”退出,尽管它确实 可能会关闭文件描述符。 Unix/POSIX 通过强制关闭所有 fd 而不刷新(并提供同义词 _exit)来扩展此行为。 当从 C++ 程
所以,我将从子线程退出回到父线程。我正在使用 _exit() 系统调用。我想知道一些事情。其中之一是我的 child 的 _exit 参数是什么。这是我的子进程正在执行的代码: printf("\n*
关于 fork() 有很多问题,但我对这段代码有点困惑。我正在用 c++ 分析一段代码,因为我得到了这个函数。 int daemon(int nochdir, int noclose) { swi
我有一个 AttributeError: '_MainProcess' object has no attribute '_exiting' 来自 Python 应用程序。不幸的是,这段代码必须运行
我有一个 Linux x86-32 GAS 汇编程序这样终止: movl $1, %eax movl $0, %ebx # argument for _exit int $0x80 当我这样退出时,程
我是一名优秀的程序员,十分优秀!