บนระบบยูนิกซ์libfaketimeเป็นโซลูชันมาตรฐานโดยพฤตินัยสำหรับปัญหานี้ในซอฟต์แวร์ จะดำเนินการเรียงลำดับของการดำเนินงานแบบคนกลางระหว่างแอปพลิเคชันของคุณและไลบรารีเวลาของระบบ คำร้องขอถูกส่งผ่านไปยังระบบ แต่การตอบกลับถูกแก้ไขตามต้องการ นอกจากนี้ยังแก้ไขผลลัพธ์ของการstat()
โทรดังนั้นเวลาแก้ไขไฟล์ & c มีการแก้ไขด้วย
การตั้งค่าทำด้วยตัวแปรสภาพแวดล้อมดังนั้นคุณอาจต้องเรียนรู้เกี่ยวกับสิ่งเหล่านี้หากคุณไม่คุ้นเคยกับการทำงานของพวกเขา
libfaketime สนับสนุนการปรับเทียบแบบสัมพัทธ์และสัมบูรณ์การหยุดและการใช้เวลาและการเร่งความเร็วหรือลดความเร็วลง แต่ฉันไม่รู้เกี่ยวกับการวิ่งถอยหลัง
โปรดทราบว่าเวอร์ชันปัจจุบันอ้างว่าวินาทีเป็นความละเอียดสูงสุดของเวลาและส่งผ่านส่วนย่อยที่สองของการตอบกลับไปยังแอปพลิเคชันที่ไม่ได้แก้ไข ดังนั้นหากคุณลดความเร็วของนาฬิกาเป็นครึ่งวินาทีโปรแกรมที่รับรู้ถึงวินาทีที่ทำให้การโทรข้ามเวลาเร็วมากจะได้รับประสบการณ์ที่สองทั้งสองครั้งหลังจากที่กันและกัน หากนาฬิกาหยุดแสดงว่าแอพพลิเคชั่นจะเห็นเวลาสุ่มภายในวินาทีที่เลือก
น่าเสียดายที่ Github ไม่สามารถใช้งานได้ในวันนี้ดังนั้นเอกสารไม่พร้อมใช้งานในขณะนี้ แต่อาจจะได้รับการแก้ไขในไม่ช้า
แก้ไข:
ด้วย Github atof()
กลับขึ้นฉันพยายามมันและพบรหัสสำหรับการเปลี่ยนแปลงความเร็วจะเพียงพอทั่วไปว่ามันทำงานได้ดีกับค่าลบหรือสิ่งอื่นที่ได้รับการยอมรับจาก
อย่างไรก็ตามมีปัญหาที่แตกต่างกันชัดเจน: สำหรับการเปลี่ยนแปลงความเร็วจำเป็นต้องมีแหล่งกำเนิดเวลาเพิ่มเติมจากเวลาปัจจุบันจริงและเวลาที่ต้องการชดเชย ต้นกำเนิดนี้ถูกตั้งค่าอย่างอิสระสำหรับกระบวนการย่อยดังนั้น (เมื่อเรียกใช้ย้อนกลับด้วยความเร็วที่กำหนด) เมื่อกระบวนการพาเรนต์ถอนออกหนึ่งนาทีกระบวนการย่อยที่เพิ่งวางใหม่จะเห็นเวลาปัจจุบันเป็นเวลาสองนาทีหลังจากกระบวนการพาเรนต์ทำ