日期:2014-05-16  浏览次数:20773 次

如何在内存中直接运行进程?
题目可能不太确切!
我的问题详细描述如下:某个可执行程序A放在某个硬件板上,另一个程序B在主机上运行,从硬件板上读出A,此时我就想让程序A在主机上直接运行,而不必先存到主机上,然后再运行
请各位大侠们帮小弟啊!

------解决方案--------------------
你可以在内存中建立虚拟临时目录,把程序读入那个目录中执行啊。或者你的所谓硬件板可以考虑映射为一个目录,这样直接执行就可以了。
------解决方案--------------------
配置SAMBA,可以在WINDOW上直接打开LINUX下的各种文件
------解决方案--------------------
分配内存把代码拷贝进去,然后跳转过去就OK了
具体细节可能涉及到页面的属性变更等等(可执行)
------解决方案--------------------
如果是Linux可以这么做.
1.代码读入内存,
2. FILE *fmemopen(void *buf, size_t size, const char *mode);
3. int fileno(FILE *stream);
4. int fexecve(int fd, char *const argv[], char *const envp[]);

------解决方案--------------------
如果只是调用一个函数.
1. 读入函数内容入内存.
2. 将数据强制转换为指针函数
3. 调用该指针函数.

没测试,不一定可行 。

------解决方案--------------------
NFS mount试试

如果在A上可以开nfsd的话,:-)
------解决方案--------------------
加密直接用现成的加壳软件吧
------解决方案--------------------
gangjh(阿飛) :
我按照你的提示做了,但fileno总是执行错误,提示fmemopen 返回的FILE* f是错的,至于fexecve就不可能对了
能不能给多点提示啊

------------------------------------
看看到底哪个环节错了,在每个函数调用后加perror察看出错原因。
------解决方案--------------------
我也来两句。
要是简化设计的话,
为什么不用内存文件系统?
tmpfs或者直接的ramdisk
可能shell就能做出来了