2010-04-01 10 views
1

Est-il possible de lire le fichier binaire dans le fichier ruby ​​et de l'exécuter directement en mémoire?Ruby: exécute un fichier binaire en mémoire?

par exemple quelque chose comme ceci:

x = IO.read('/bin/ls') 
execute(x) 

j'ai essayé system(x) mais il donne: ArgumentError: string contains null byte

+2

S'il vous plaît ajouter des informations sur ce que vous essayez d'accomblish avec cela? Probablement il y a une meilleure solution ... – hurikhan77

+0

Je veux juste charger le code d'octet de programme et l'exécuter de la mémoire au lieu du disque dur. C'est similaire à system() et exec() mais je veux faire la même chose en passant le programme chargé en mémoire sur le système au lieu du disque dur. – John

Répondre

0

Je ne pense pas que vous allez être en mesure de le faire. Lorsqu'un exécutable démarre, l'éditeur de liens dynamiques doit effectuer beaucoup de correctifs.

La solution la plus simple consiste à écrire l'exécutable dans un fichier de disque temporaire quelque part et à l'exécuter.

+0

ne pouvons-nous pas faire quelque chose de similaire à eval() mais pour le code byte ou le code asm? – John

Questions connexes