Unix sistemlerde libfaketime , yazılımdaki bu sorun için fiili standart çözümdür. Uygulamanız ve sistemin zaman kitaplığı arasında bir tür ortadaki işlemi gerçekleştirir. İstekler sisteme iletilir, ancak yanıtlar gerektiğinde değiştirilir. Ayrıca stat()
arama sonuçlarını değiştirir , bu nedenle dosya değiştirme süreleri & c. ayrıca değiştirilir.
Ayarlar ortam değişkenleriyle yapılır, bu yüzden çalışmalarına zaten aşina değilseniz bunları öğrenmek zorunda kalabilirsiniz.
libfaketime göreceli ve mutlak ofsetleri, durma ve çalışma süresini ve hızlanma veya yavaşlamayı destekler. Geride geriye koşmayı bilmiyorum.
Geçerli sürümün saniyeler içinde var olan en yüksek çözünürlük olduğunu iddia eder ve yanıtların ikinci-altı bölümlerini değiştirilmemiş uygulamaya geçirir. Bu nedenle, saati yarı hıza düşürürseniz, çok hızlı zaman aramaları yapan bir saniye saniye farkında program, bir kereden sonra iki kat daha uzun sürmektense tüm saniyeyi birbiri ardına iki kez deneyimleyecektir. Saat durursa, uygulama seçilen saniye içinde rastgele bir zaman görür.
Ne yazık ki, Github bugün kapalı, bu yüzden dokümanlar şu anda kullanılamıyor, ancak muhtemelen yakında düzeltilecektir.
Düzenle:
Github yedeklemesiyle denedim ve hız değişiminin kodunu negatif değerler veya kabul ettiği başka bir şeyle iyi çalışacak kadar genel olarak buldum atof()
.
Ancak, farklı bir sorun ortaya çıktı: Hız değişikliği için, gerçek zamana ve istenen zaman ofsetine ek olarak bir zaman kaynağı gereklidir. Bu başlangıç alt süreçler için bağımsız olarak ayarlanır, böylece üst işlem bir dakika geri çekildiğinde (nominal hızda geriye doğru giderken), yeni ortaya çıkan bir alt işlem, geçerli süreyi üst işlemden iki dakika sonra olarak görür.