क्या किसी को फोरट्रान में दिए गए मिलीसेकंड के लिए सोने के तरीके के बारे में पता है? मैं गैर-पोर्टेबल सिस्टम कॉल का उपयोग नहीं करना चाहता, इसलिए फोरट्रान या सी पुस्तकालयों के लिए आंतरिक कुछ भी पसंद किया जाएगा।फोरट्रान में सोएं
उत्तर
सेकंड की इकाइयों में सोने के लिए सी पुस्तकालय नींद उपयोग करने के लिए बाइंडिंग फोरट्रान आईएसओ सी का उपयोग करना: बाध्यकारी
module Fortran_Sleep
use, intrinsic :: iso_c_binding, only: c_int
implicit none
interface
! should be unsigned int ... not available in Fortran
! OK until highest bit gets set.
function FortSleep (seconds) bind (C, name="sleep")
import
integer (c_int) :: FortSleep
integer (c_int), intent (in), VALUE :: seconds
end function FortSleep
end interface
end module Fortran_Sleep
program test_Fortran_Sleep
use, intrinsic :: iso_c_binding, only: c_int
use Fortran_Sleep
implicit none
integer (c_int) :: wait_sec, how_long
write (*, '("Input sleep time: ")', advance='no')
read (*, *) wait_sec
how_long = FortSleep (wait_sec)
write (*, *) how_long
stop
end program test_Fortran_Sleep
क्या आपको लगता है कि इंटेल फोरट्रान के अंदर प्रदान किया गया 'नींद' फ़ंक्शन मूल रूप से वही काम कर रहा है जो आपने ऊपर प्रदान किया है? –
हां, कार्यात्मक रूप से शायद वही है। Gfortran में एक समान subroutine उपलब्ध है। यह एक ऐसा एक्सटेंशन है जो शायद कुछ अन्य कंपाइलर का हिस्सा न हो। –
हाय, लिनक्स में मैं इसका उपयोग कर सकता हूं और यह ठीक काम करता है। विंडोज़ में और मिनजीडब्लू का उपयोग करते समय, इसे संकलित करते समय शिकायत होती है कि इसे स्लीप फ़ंक्शन नहीं मिल रहा है। क्या आप जानते हैं कि इसे कैसे ठीक किया जाए? –
ऐसा करने के लिए फोरट्रान मानक आंतरिक कार्यों का उपयोग कर सकते हैं सी के बिना:
program sleep
!===============================================================================
implicit none
character(len=100) :: arg ! input argument character string
integer,dimension(8) :: t ! arguments for date_and_time
integer :: s1,s2,ms1,ms2 ! start and end times [ms]
real :: dt ! desired sleep interval [ms]
!===============================================================================
! Get start time:
call date_and_time(values=t)
ms1=(t(5)*3600+t(6)*60+t(7))*1000+t(8)
! Get the command argument, e.g. sleep time in milliseconds:
call get_command_argument(number=1,value=arg)
read(unit=arg,fmt=*)dt
do ! check time:
call date_and_time(values=t)
ms2=(t(5)*3600+t(6)*60+t(7))*1000+t(8)
if(ms2-ms1>=dt)exit
enddo
!===============================================================================
endprogram sleep
निष्पादन योग्य मान लिया जाये कि एसएलपी है:
~$ time slp 1234
real 0m1.237s
user 0m1.233s
sys 0m0.003s
इस कार्यक्रम यदि y के एक विशेष मामले के जोड़े कहां चिंतित है कि यह आधी रात के आसपास टूट जाएगा :)
जो मुझे याद दिलाता है। नींद की अवधि के दौरान आपको सीपीयू समय की आवश्यकता होने पर इस दृष्टिकोण का निश्चित रूप से उपयोग नहीं किया जाना चाहिए। मुझे लगता है कि आप रिमोट डेटा के लिए लंबे इंतजार के लिए ऐसा नहीं करते हैं। यदि आप करते हैं, तो आप शैल रैपर का उपयोग करके बहुत बेहतर हैं, क्योंकि ऊपर उदाहरण सीपीयू गहन है। – milancurcic
- 1. फोरट्रान
- 2. फोरट्रान
- 3. फोरट्रान
- 4. फोरट्रान
- 5. फोरट्रान
- 6. फोरट्रान
- 7. फोरट्रान
- 8. फोरट्रान में निजी फ़ंक्शन
- 9. फोरट्रान में अनंतता
- 10. सी ++ बूस्ट थ्रेड कैसे सोएं
- 11. फोरट्रान 2003
- 12. कैसे फोरट्रान
- 13. फोरट्रान 95
- 14. आधुनिक फोरट्रान
- 15. फोरट्रान 90
- 16. फोरट्रान 2003
- 17. बैश स्क्रिप्ट नई प्रक्रिया में कैसे सोएं, फिर
- 18. एप्लिकेशन चलने पर लूप में सोएं, लेकिन बहुत कम
- 19. फोरट्रान unformatted फ़ाइल प्रारूप
- 20. फोरट्रान 9 0 संसाधन?
- 21. फोरट्रान सरणी मेमोरी प्रबंधन
- 22. फोरट्रान का प्रदर्शन
- 23. फोरट्रान 90 प्रकार पैरामीटर
- 24. फोरट्रान आवंटित/हटाए गए
- 25. फोरट्रान फॉरल प्रतिबंध
- 26. फोरट्रान और सी ++
- 27. क्या फोरट्रान कंपाइलर्स हैं?
- 28. बेस्ट फोरट्रान आईडीई
- 29. फोरट्रान में शुद्ध subroutines - कंपाइलर अनुकूलन
- 30. फोरट्रान में "%" का मतलब क्या है?
एक 'नींद' सबराउटिन है जो तर्क के रूप में कई सेकंड लेती है लेकिन मुझे यकीन नहीं है कि यह कहां से आ रहा है (रैपर से सी फ़ंक्शन?)। ऐसा लगता है कि मैं जो इरादा कर रहा हूं उसके लिए ठीक काम करता है। मैं एक पीसी पर इंटेल फोरट्रान कंपाइलर 12 का उपयोग कर रहा हूं। –
मैं बस एक फोरट्रान कार्यक्रम में भाग गया जो एक (गैर-मानक) कॉल सिस्टम (char_arg) का उपयोग करता है जो बिना किसी सीपीयू ओवरहेड वाले सिस्टम तक पहुंचता है। इसे पीजीएफ 9 0, इफोर्ट और गफ्तर्रान के साथ बाहर निकाला, सब ठीक है। इसलिए, कोई नींद फ़ंक्शन प्राप्त करने के लिए कॉल सिस्टम ('नींद' // number_of_seconds_string) जैसी कुछ कर सकता है। अन्य कंपेलरों के साथ इसका परीक्षण करने का मौका नहीं था। – milancurcic