유닉스 시스템에서 libfaketime 은 소프트웨어에서이 문제에 대한 사실상의 표준 솔루션입니다. 응용 프로그램과 시스템 시간 라이브러리간에 일종의 중간자 작업을 수행합니다. 요청은 시스템으로 전달되지만 응답은 필요에 따라 수정됩니다. 또한 stat()
호출 결과를 수정하므로 파일 수정 시간 & c. 수정되었습니다.
설정은 환경 변수를 사용하여 수행되므로 작업에 익숙하지 않은 경우 해당 변수에 대해 알아야합니다.
libfaketime은 상대 및 절대 오프셋, 중지 및 실행 시간, 속도 증가 또는 속도 저하를 지원합니다. 그래도 뒤로 달리는 것에 대해서는 모르겠습니다.
현재 버전은 초가 현재 최고 해상도이며 가장 적은 부분의 응답을 수정되지 않은 응용 프로그램으로 전달합니다. 따라서 클럭 속도를 절반으로 낮추면 매우 빠른 시간 호출을하는 1 초 미만의 인식 프로그램은 한 번만 두 배가 걸리는 것이 아니라 서로를 2 초마다 한 번씩 경험합니다. 시계가 중지되면 응용 프로그램이 선택한 초 내에 임의의 시간을 보게됩니다.
불행히도, Github는 오늘 다운되었으므로 지금은 문서를 사용할 수 없지만 곧 수정 될 것입니다.
편집하다:
Github을 백업하면 속도를 변경하는 코드가 음수 값이나 기타 허용되는 값과 잘 작동 할 수있을 정도로 일반적인 것으로 나타났습니다 atof()
.
그러나 다른 문제가 분명해졌습니다. 속도 변경을 위해서는 실제 현재 시간과 원하는 시간 오프셋 외에 시간 원점이 필요합니다. 이 원점은 하위 프로세스에 대해 독립적으로 설정되므로 상위 프로세스가 1 분 후 철회 될 때 (공칭 속도로 뒤로 실행하는 경우) 새로 생성 된 하위 프로세스는 상위 프로세스보다 2 분 후 현재 시간을 볼 수 있습니다.