Pada sistem unix, libfaketime adalah solusi standar de facto untuk masalah ini dalam perangkat lunak. Ini melakukan semacam operasi man-in-the-middle antara aplikasi Anda dan perpustakaan waktu sistem. Permintaan diteruskan ke sistem, tetapi balasannya diubah sesuai kebutuhan. Ini juga memodifikasi hasil stat()
panggilan, sehingga waktu modifikasi file & c. juga dimodifikasi.
Pengaturan dibuat dengan variabel lingkungan, jadi Anda mungkin harus belajar tentang itu jika Anda belum terbiasa dengan cara kerjanya.
libfaketime mendukung offset relatif dan absolut, waktu berhenti dan berjalan, dan mempercepat atau memperlambat. Saya tidak tahu tentang berlari mundur.
Perhatikan bahwa versi saat ini berpura-pura detik adalah resolusi waktu tertinggi yang ada, dan melewati bagian tanggapan kedua melalui aplikasi yang tidak dimodifikasi. Jadi, jika Anda memperlambat jam menjadi setengah kecepatan, program sadar sub-detik yang membuat panggilan waktu yang sangat cepat akan mengalami seluruh detik dua kali setelah satu sama lain daripada sekali hanya mengambil dua kali lebih lama. Jika jam dihentikan, ini berarti aplikasi melihat waktu acak dalam detik yang dipilih.
Sayangnya, Github turun hari ini, jadi dokumen tidak tersedia saat ini, tetapi itu mungkin akan segera diperbaiki.
Edit:
Dengan Github kembali, saya mencobanya, dan menemukan kode untuk perubahan kecepatan cukup umum sehingga berfungsi baik dengan nilai negatif atau apa pun yang diterima oleh atof()
.
Namun, masalah yang berbeda menjadi jelas: Untuk perubahan kecepatan, asal waktu diperlukan selain waktu saat ini dan offset waktu yang diinginkan. Asal ini diatur secara independen untuk subproses, sehingga (ketika berjalan mundur dengan kecepatan nominal) ketika proses induk telah ditarik satu menit, subproses yang baru melahirkan akan melihat waktu saat ini sebagai dua menit lebih lambat dari proses induk.