我正在尝试运行 bzip 并让它从 nasm 编码的汇编程序(在 linux 下)内部将控制权返回给调用函数。我显然需要结合使用 sys_fork 和 sys_execve 系统调用来实现这一点。经过大量搜索,我找到了一个如何使用 sys_execve 的示例,但是我找不到一个如何使用 sys_fork 的示例。对我的请求的任何帮助将不胜感激。
最佳答案
我的经验有限,但我记得 sys_fork
很简单。 “Just do it”——没有参数。此时,您“同时在两个地方”。如果 eax
为零,则您就是 child - 在 bzip 上执行 sys_execve
。如果 eax
为非零(且非负!),则您是父级,而 eax
是您的 PID。对该 PID 执行 sys_waitpid
。我记得,这返回 bzip 的退出状态左移 8 个字节 - sys_execve
本身永远不会返回。
我有一个运行编辑器、nasm 和 ld(都在硬编码的“hello.asm”上)的粗略示例。发帖时间有点长,但如果您需要,我可以通过某种方式提供。我发现为 sys_execve
获取正确的参数是最困难的部分,我记得。
关于linux - 请求nasm中sys_fork的例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13808640/