最初にプロセスを別のプロセスからフォークしようとしています。このために、私__libc_start_main
は glibc (私が使用する変更された glibc) の関数を変更しようとし、そこにフォークを配置しようとしましたが、コンパイルしようとするとエラーが発生するため、glibc をコンパイルできませんでした。他のオプションとは何ですか?また、フォークを挿入し__libc_start_main
ても機能しないのはなぜですか?
ここでも、プログラムの変更が不要な方法でそれを行いたいことに注意してください。つまり、glibc での変更は問題ありませんが、プログラムではありません。
では__libc_start_main
、このようにフォークしようとします。
if (__builtin_expect (! not_first_call, 1))
{
struct pthread *self;
fork(); // <-- here
self = THREAD_SELF;
/* Store old info. */
unwind_buf.priv.data.prev = THREAD_GETMEM (self, cleanup_jmp_buf);
unwind_buf.priv.data.cleanup = THREAD_GETMEM (self, cleanup);
/* Store the new cleanup handler info. */
THREAD_SETMEM (self, cleanup_jmp_buf, &unwind_buf);
/* Run the program. */
result = main (argc, argv, __environ MAIN_AUXVEC_PARAM);
}
私が得るエラーは次のとおりです。
file '/build/sunrpc/xbootparam_prot.T' already exists and may be overwritten
make[2]: *** [build/sunrpc/xbootparam_prot.stmp] Error 1