Как вы, возможно, знаете, все потоки в приложении умирают в разветвленном процессе, кроме потока, выполняющего вилку. Однако я планирую восстановить эти потоки в разветвленном процессе, вызвав pthread_create и используя pthread_attr_setstack , чтобы назначить вновь созданным потокам тот же стек, что и мертвые потоки. Примерно так.
// stackAddr and stacksize taken from the dead thread
pthread_attr_setstack(&attr, stackAddr, stacksize);
rc = pthread_create(&thread, &attr, threadRoutine, NULL);
Однако мне все равно нужно получить значения регистров ЦП, такие как указатель стека, базовый указатель, указатель инструкций и т. Д., Чтобы перезапустить потоки с той же точки. Как я могу это сделать? А что еще мне нужно сделать, чтобы успешно достичь своей цели?
Также обратите внимание, что я использую 64-битную архитектуру. Какие дополнительные трудности были бы у него по сравнению с 32-битным?