c++ - forkpty() 和 execl() 子进程的堆内存管理?

标签 c++ linux fork

我有一个在 Linux 中开发的 C++ 应用程序。我正在分配一些动态内存并最终调用 forkpty()。子进程正在调用 execl(),正如我们所知,如果成功执行命令,execl() 永远不会返回。此外,正如我们所知,forkpty() 会复制所有父项的数据。因此,如果 child() 进程从不将控制权返回给我的应用程序以便最终进行内存清理,那么可以肯定地说最好不要在从子进程调用 execl() 时分配任何动态内存吗? ?真不敢相信我在这里找不到这个……提前致谢。

最佳答案

分配的内存是进程镜像的一部分;你打电话时 execl,整个过程镜像被替换,并且任何内存在 它只是像其他部分一样“消失”,返回操作系统, 然后将在其他地方使用它。

关于c++ - forkpty() 和 execl() 子进程的堆内存管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15812831/

相关文章:

c++ - 定义类的成员函数时包含参数会返回错误

c++ - 为什么 as_const 禁止右值参数?

linux - shell 脚本到 ls 并在 ls 结果上执行命令

c - 指向共享内存中数组的共享指针,指针似乎不共享?

c++ - 将 wstring_view 转换为 int

c++ - 使用成员作为参数调用构造函数解析为变量定义

linux - 为另一台服务器编译 gawk 可执行文件

linux - 是否可以为 Linux/ARM 构建和运行 Go 插件?

c++ - 堆上的类内的 Linux fork

c - 为什么在打印 "This is the child process!"后执行停止?