【问题标题】:Prime example of pthreads / fork / and execvp?pthreads / fork / 和 execvp 的主要例子?
【发布时间】:2020-10-09 02:03:32
【问题描述】:

我正在寻找一个在新创建的 pthread 中使用 fork() 的工作示例,其中子线程使用 execvp() 运行进程,而父线程等待子线程。程序必须在没有内存泄漏的情况下关闭。

我自己已经接近解决方案,但是我遇到了内存泄漏 (valgrind),因为子进程留下了来自 fork 的内存'

【问题讨论】:

  • valgrind 到底是从哪里告诉你内存泄漏的呢?您确实了解,在 execvp 之后,原始进程会被新进程毫不客气地替换,而无需经历诸如释放所有已分配内存之类的琐事。
  • 内存泄漏源于父对象。我在一个类中调用 fork 和 exec,并且该类在子通行证时没有正确释放
  • 举个例子,所有的互联网搜索引擎都离线了吗?关于您的问题解决方案,如果您需要帮助,那么您应该展示您所拥有的。
  • 请重新阅读我之前评论的后半部分。在所描述的场景中没有内存泄漏,这是来自 valgrind 的误报。
  • 内存泄漏很像这个例子但是在线程stackoverflow.com/questions/42143707/…

标签: c++ pthreads fork


【解决方案1】:

经过一段时间搜索可能的原因后,我解决了内存泄漏问题。我发现问题是 execvp 返回 -1 表示命令没有被正确调用,因此 没有 正确替换子进程堆栈。

在确保传递了正确的命令后,泄漏已得到解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    相关资源
    最近更新 更多