shell 命令完成后子进程会发生什么?

问题描述 投票:0回答:1

所以我使用 exec 打开 shell 并为我运行 shell 命令,这是:

exec('删除文件名并退出')

使用 exit 关闭 Shell

我必须在一次运行中多次使用这个exec,我无法找到子进程退出并关闭CMD后会发生什么,命令完成后子进程是否会自行关闭或者我是否必须显式关闭子进程

shell cmd javascript node.js exec
1个回答
0
投票

图中没有子进程。

根据 linux 手册页

有时会看到 execve() (以及描述的相关函数 在 exec(3)) 中被描述为“执行一个新进程”(或类似的)。 这是一个极具误导性的描述: 没有新流程; 调用进程的许多属性保持不变(在 特别是它的 PID)。 execve() 所做的只是安排一个 现有进程(调用进程)来执行新程序。

相反,

exec()
函数系列会用新的过程映像替换当前过程映像。 参见:手册页


回答你的问题:

命令完成后子进程是否会自行关闭,还是我必须显式关闭子进程

我假设,在解决过程之后,原始过程图像被恢复。根据

exec
调用的结果,原始进程收到 0 表示成功,-1 表示错误,并根据手册页正确设置
errno

有关过程映像替换期间保持不变的内容的更多详细信息,请参阅 execve 手册页中的

对过程属性的影响
部分。

© www.soinside.com 2019 - 2024. All rights reserved.