यूनिक्स सिस्टम पर, libfaketime है वास्तविक सॉफ्टवेयर में इस समस्या के लिए मानक समाधान। यह आपके एप्लिकेशन और सिस्टम के टाइम लाइब्रेरी के बीच एक तरह का मैन-इन-द-मिड ऑपरेशन करता है। अनुरोध सिस्टम के माध्यम से पारित किए जाते हैं, लेकिन उत्तरों को आवश्यकतानुसार संशोधित किया जाता है। यह stat()
कॉल के परिणामों को भी संशोधित करता है , इसलिए संशोधन समय और सी फ़ाइल करें। संशोधित भी हैं।
सेटिंग्स पर्यावरण चर के साथ बनाई गई हैं, इसलिए आपको उन लोगों के बारे में सीखना पड़ सकता है यदि आप पहले से ही उनके कामकाज से परिचित नहीं हैं।
libfaketime सापेक्ष और निरपेक्ष ऑफ़सेट्स का समर्थन करता है, रुका हुआ और चलने वाला समय और तेज़ या धीमा हो रहा है। मैं हालांकि पीछे की ओर दौड़ने के बारे में नहीं जानता।
ध्यान दें कि वर्तमान संस्करण दिखावा सेकंड समय का उच्चतम रिज़ॉल्यूशन है, और अनुप्रयोग के माध्यम से प्रतिक्रियाओं के उप-दूसरे भागों को पास करता है। इस प्रकार, यदि आप घड़ी को आधी गति तक धीमा कर देते हैं, तो एक बहुत तेज़ समय कॉल करने वाला सब-सेकेंड अवेलेबल प्रोग्राम एक दूसरे के बाद पूरे दो बार अनुभव करेगा, बजाए एक बार के केवल दो बार। यदि घड़ी बंद हो जाती है, तो इसका मतलब है कि एप्लिकेशन चयनित सेकंड के भीतर एक यादृच्छिक समय देखता है।
दुर्भाग्य से, गितुब आज नीचे है, इसलिए डॉक्स अभी उपलब्ध नहीं हैं, लेकिन यह जल्द ही तय हो जाएगा।
संपादित करें:
गितुब बैक अप के साथ मैंने इसे आज़माया, और गति परिवर्तन के लिए कोड को सामान्य रूप से पर्याप्त पाया कि यह नकारात्मक मूल्यों या किसी भी चीज़ के साथ अच्छी तरह से काम करता है atof()
।
हालांकि, एक अलग मुद्दा स्पष्ट हो गया: गति परिवर्तन के लिए, वास्तविक वर्तमान समय और वांछित समय ऑफसेट के अलावा एक समय उत्पत्ति आवश्यक है। यह उत्पत्ति उपप्रकारों के लिए स्वतंत्र रूप से सेट की गई है, ताकि (जब नाममात्र गति से पीछे की ओर चल रहा हो) जब मूल प्रक्रिया एक मिनट पीछे हट जाए, तो एक नव-निर्मित सबप्रोसेस वर्तमान समय को दो मिनट बाद देखेगा, क्योंकि मूल प्रक्रिया नहीं है।