【发布时间】:2018-08-17 19:43:17
【问题描述】:
我知道我可以使用像 execl("/bin/sh", "-c", some_string, 0) 这样的系统调用来使用特定的 shell/解释器来解释 shell 代码的“sn-p”。但在我的情况下,我在内存中有一个任意字符串,它代表一些需要运行的完整脚本。也就是说,这个字符串/内存缓冲区的内容可能是:
#! /bin/bash
echo "Hello"
或者他们可能是:
#! /usr/bin/env python
print "Hello from Python"
我想理论上字符串/缓冲区甚至可以包含一个有效的二进制可执行文件,尽管这不是一个特别的优先级。
我的问题是:有没有办法让系统直接从我给它的内存缓冲区启动子进程,而不将其写入临时文件?或者至少,一种将字符串提供给 shell 并将其路由到正确解释器的方法?
似乎我发现的所有系统调用都期望现有可执行文件的路径,而不是需要可执行文件本身的低级别。我确实不想自己解析shebang 或任何东西。
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: c executable