2

execve()システムコールを呼び出さずに、静的にリンクされたバイナリをexec()できるCライブラリが必要です。システムコールが機能しない理由は、バイナリファイルが実行可能ではなく、そのシステムで実行可能にすることができないためです。動的にリンクされたバイナリの場合、実行/lib/ld-linux.so.2 prognameするとうまくいきますが、静的にリンクされたバイナリではそのセグフォールトが発生します。

http://archive.cert.uni-stuttgart.de/bugtraq/2004/01/msg00002.htmlでul_exec1.1を見つけましたが、それは私のシステム上の独自のHello、Worldバイナリのセグメンテーション違反のようです。

1つのオプションは、バイナリのコピーを作成し、そのコピーを実行可能にして、execve()を呼び出すことです。私はそのようなコピーを必要としない解決策を探しています(パフォーマンス上の理由から)。

4

3 に答える 3

4

最新の x86 Linux で動作するように、Grugq のユーザーランド exec を更新しました。x86_64 ユーザーランド exec をゼロから作成しました。

于 2013-06-07T17:36:15.570 に答える
1

次に、実行ビットを指定された任意のファイルにマップするユーザーモード ファイルシステム (たとえば python-fuse を使用) はどうですか? それはパフォーマンスへの影響が大きすぎるでしょうか?

于 2010-11-20T23:25:27.850 に答える
-1

完全には本番環境に対応していないいくつかの実装を含む短い wiki 記事があります: http://plash.beasts.org/wiki/UserModeExec

于 2010-12-10T19:16:44.570 に答える