当一个线程 execve() 一个文件时会发生啥?

Posted

技术标签:

【中文标题】当一个线程 execve() 一个文件时会发生啥?【英文标题】:What happens when a thread execve() a file?当一个线程 execve() 一个文件时会发生什么? 【发布时间】:2022-01-06 11:35:23 【问题描述】:

这是否会清除所有线程地址空间,因为 exeve() 删除所有内容并且地址空间在线程之间共享,导致 execve 文件的许多副本与 execve 调用时存在的任何寄存器值同时运行(在特别是每个程序计数器都会不同)?

【问题讨论】:

【参考方案1】:

这在the man page中有解释:

除了调用线程之外的所有线程都被销毁 一个执行()。互斥体、条件变量和其他 pthread 不保留对象。

新程序仅从一个线程开始。替代方案将是行不通的。

【讨论】:

以上是关于当一个线程 execve() 一个文件时会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章

当一个线程试图访问一个互斥锁资源时会发生啥?

当 .NET 线程抛出异常时会发生啥?

当单个程序有多个 `ThreadPoolExecutor` 时会发生啥?

当套接字连续接收到超出程序处理能力的数据时会发生啥?

调用具有条件变量等待的线程对象的析构函数时会发生啥?

当一个模块被导入两次时会发生啥?