gpt4 book ai didi

linux - execv 和只运行一个应用程序之间的区别?

转载 作者:太空宇宙 更新时间:2023-11-04 09:09:34 27 4
gpt4 key购买 nike

我们有一个从 inittab 启动的 stub ,execv 是我们的进程。 (ARM Linux 内核 2.6.25)

测试进程时,只有从 inittab 启动并执行时才会失败。如果在命令行上启动,它每次都能完美运行。

该过程大量使用 SYS V IPC。

我应该注意这两种启动方法之间的差异吗?

最佳答案

正如 Matthew 提到的,这可能是一个环境变量问题。在两种情况下调用您的程序之前尝试转储您的 env 列表 - 通过 stub 或“手动”。

顺便说一句,如果您能提供更多有关程序崩溃原因的信息,那将大有帮助。日志文件?核心转储/gdb ?从 execve 返回值?


编辑:其他检查:是否确定传递完全相同的参数列表(如果有参数)?

要回答您的问题,这两种方法之间没有区别。实际上,您的 shell fork() 并最终调用 execve() 来启动您的进程,为它提供您手动提供的参数以及您在 shell 中设置的环境变量。顺便说一下,当通过 init 启动你的程序时,它可以在你的机器启动的早期阶段启动它。您确定此时一切都已准备就绪,可以让您的应用正常运行吗?

关于linux - execv 和只运行一个应用程序之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/855829/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com