는 내가 fork()
시스템 호출을 오버로드 RTLD_NEXT를 사용하여 fork()
의 내 자신의 버전을 만들었습니다. 즉, dlsym(RTLD_NEXT, fork)
입니다. 이것은 포크의 내 버전을 칠 것입니다. 이 후 나는 실제 fork()
시스템 호출, 즉 자식 프로세스를 생성하고 pid를 반환하는 작업과 몇 가지 추가 기능을 복제하려고합니다.오버로드 포크()
는 그 작업을 수행하는 방법을 알아낼 수 없습니다입니다. fork()
(fork.c)의 커널 소스 코드를 확인 했으므로 그다지 알 수 없었습니다.
이렇게 :
dlsym(RTLD_NEXT,fork);
int fork(void) {
int pid=_fork(); // Trying to call actual fork does not work
return pid;
}
내가 어떻게 할 수 있습니까? (주석에서 가져온) http://lxr.linux.no/linux+v2.6.32/kernel/fork.c#L10
편집 : 여기에 포크에 대한 소스 코드를 커널에 대한 링크입니다
나는 도구를 검출 누출 일하고, 그리고이 도구는 더블 무료 때 자식 프로세스를 감지 부모가 할당 한 메모리를 삭제합니다. 내가 fork()
우선합니다이를 극복하기 위해, 그리고 fork()
이있을 때마다, 부모의 메모리 할당 테이블은 아이에게 중복됩니다.
"작동하지 않음"이란 무엇을 의미합니까? 런타임 오류? 컴파일러 오류? – Simone
@ Simone : _fork(); // 오류 : _fork가 선언되지 않았습니다. 내 생각은 실제 커널 버전의 fork와 충돌하지 않는 것이었다. 그것이 지금 분명하게되기를 바라 라. – kingsmasher1
정확히 무엇을하고 싶습니까? 당신의 최종 목표는 무엇입니까? – Omnifarious