연결 해제 호출을 가로채서 쓰레기를 생성하는 방법이 있는지 궁금합니다. 이론적으로 파일은 일정 기간이 지나면 타임스탬프가 찍히고 삭제됩니다.
답변1
바로 여기에. 이런 종류의 일(표준 함수 재정의)에 대한 일반적인 메커니즘을 LD_PRELOAD라고 합니다. 일반적인 아이디어는 매우 간단합니다. 라이브러리가 프로그램의 메모리에 로드되면 주어진 기호 이름을 정의하는 첫 번째 라이브러리가 해당 기호의 목적을 정의합니다. 따라서 LD_PRELOAD를 사용하면 다른 모든 라이브러리(libc 포함)보다 먼저 특정 라이브러리를 로드하도록 동적 링커에 지시할 수 있습니다. 즉, 나중에 로드되는 라이브러리의 특정 기능을 재정의할 수 있습니다.
LD_PRELOAD를 사용하여 널리 사용되는 프로젝트의 예는 다음과 같습니다.
- 자말 로크jemalloc 메모리 할당자를 명시적으로 사용하지 않는 프로그램에서 사용할 수 있도록 미리 로드할 수 있습니다.
- 데이트 구미시스템 시간과 날짜를 위조할 수 있습니다.
- 내 데이터를 무료로 받으세요재정의
sync()
및 관련 호출은 아무 작업도 수행하지 않으며 데이터 보안을 희생하면서 일부 애플리케이션의 성능을 향상시킵니다. - 단테기본적으로 SOCKS 프로토콜을 지원하지 않는 애플리케이션에 대해 SOCKS 프로토콜을 활성화하기 위해 LD_PRELOAD를 사용하는 명령이 포함되어 있습니다.
당신이 요구하는 것을 정확하게 수행하는 라이브러리도 있습니다 libtrash
. 공식 페이지를 찾을 수 있습니다.여기. 제가 직접 사용해본 적이 없어서 잘 작동하는지는 모르겠지만, 최근 새 버전이 출시되었기 때문에 적어도 작성자가 계속 유지하고 있는 것으로 보입니다.