Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的exec*()+;,我们通常的出口担保会发生什么变化?_C++_Exec_Raii - Fatal编程技术网

C++ C+中的exec*()+;,我们通常的出口担保会发生什么变化?

C++ C+中的exec*()+;,我们通常的出口担保会发生什么变化?,c++,exec,raii,C++,Exec,Raii,我们面临一项任务,需要exec另一个可执行文件来替换当前进程映像 但是很难找到关于C++和运行时交互的文档。特别是,我们幸运地认为理所当然的任何保证是否仍然有效 调用析构函数展开堆栈(用于自动、线程本地和静态变量) 调用std::atexit()回调 给定:“…是execve的前端…”和“…execve()在成功时不会返回,并且调用进程的文本、数据、bss和堆栈被加载的程序的文本、数据、bss和堆栈覆盖…”(来源:)。我认为您根本没有任何保证。exec*使用不同的进程替换该进程,并且不会返回。

我们面临一项任务,需要
exec
另一个可执行文件来替换当前进程映像

<>但是很难找到关于C++和运行时交互的文档。特别是,我们幸运地认为理所当然的任何保证是否仍然有效

  • 调用析构函数展开堆栈(用于自动、线程本地和静态变量)
  • 调用
    std::atexit()
    回调

给定:“…是execve的前端…”和“…execve()在成功时不会返回,并且调用进程的文本、数据、bss和堆栈被加载的程序的文本、数据、bss和堆栈覆盖…”(来源:)。我认为您根本没有任何保证。
exec*
使用不同的进程替换该进程,并且不会返回。如果调用成功,“旧”进程将消失而不留痕迹。成功后,不会展开堆栈,因为堆栈已消失。没有调用
std::atexit()
,因为进程没有退出。谢谢大家,我想所有这些都可以成为答案!给定:“…是execve的前端…”和“…execve()在成功时不会返回,并且调用进程的文本、数据、bss和堆栈被加载的程序的文本、数据、bss和堆栈覆盖…”(源:)。我认为您根本没有任何保证。
exec*
使用不同的进程替换该进程,并且不会返回。如果调用成功,“旧”进程将消失而不留痕迹。成功后,不会展开堆栈,因为堆栈已消失。没有调用
std::atexit()
,因为进程没有退出。谢谢大家,我想所有这些都可以成为答案!