gpt4 book ai didi

c - 如何从内存运行任意脚本或可执行文件?

转载 作者:太空宇宙 更新时间:2023-11-04 01:46:58 24 4
gpt4 key购买 nike

我知道我可以使用像 execl("/bin/sh", "-c", some_string, 0) 这样的系统调用来解释使用特定 shell 的 shell 代码“片段”/口译员。但就我而言,我在内存中有一个任意字符串,代表一些需要运行的完整脚本。也就是说,这个字符串/内存缓冲区的内容可能是:

#! /bin/bash

echo "Hello"

或者他们可能是:

#! /usr/bin/env python

print "Hello from Python"

我想理论上字符串/缓冲区甚至可以包含一个有效的二进制可执行文件,尽管这不是一个特别的优先级。

我的问题是:有没有办法让系统直接从我给它的内存缓冲区启动子进程,而不将其写入临时文件?或者至少,一种将字符串提供给 shell 并将其路由到正确解释器的方法?

似乎我发现的所有系统调用都期望现有可执行文件的路径,而不是需要可执行文件本身的低级别的东西。我想要解析 shebang或任何我自己。

最佳答案

您没有指定操作系统,但由于 #! 是特定于 Unix 的,所以我认为这就是您所说的。

据我所知,没有系统调用可以从内存块而不是文件中加载程序。用于加载程序的最低级系统调用是 execve() 函数,它需要要加载的文件的路径名。

关于c - 如何从内存运行任意脚本或可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51901959/

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