תוכן עניינים הקדמה
הכרות עם schemes
תבניות נתונים
תבניות
משפטי בקרה
משתנים לקסיקלים
רקורסיה
קלט/פלט
macros
מבנים
alises and tables ממשק המערכת
מחלקות ואובייקטים
jumps
אי-דטרמיניסטיות
מנועים
shell scripts
אתר ללימוד מקיף> פרק 11 - ממשק המערכת

פרק 11 - ממשק המערכת


הנושאים בפרק זה:
11.1.     חיפוש ומחיקת קבצים
11.2.     פקודות הקוראות למערכת ההפעלה
11.3.     משתני סביבה


תוכניות יעילות ב-Scheme צריכות לאפשר שימוש בפקודות המפעילות את מערכת ההפעלה.

11.1 חיפוש ומחיקת קבצים

הפרוצדורה ?file-exists בודקת האם הארגומנט שסופק לה הוא שם של קובץ.
delete-file - פרוצדורה זו מוחקת את הקובץ שסופק לה בתור ארגומנט.
פרוצדורות אלו אינן סטנדרטיות בשפה אך זמינות ברוב היישומים.
הן פועלות על קבצים ולא על ספריות.

file-or-directory-modify-seconds מחזירה את הזמן שבו הקובץ או הספרייה שונו. הזמן מוערך בשניות מ-12 בצוהריים עפ"י שעון גרינוויץ' ב-1 לינואר 1970.

לדוגמא,

(file-or-directory-modify-seconds "hello.scm")
=> 893189629

בהנחה שהקובץ hello.scm שונה בסביבות 21/4/98.



לתחילת העמוד

11.2 פקודות הקוראות למערכת ההפעלה

הפרוצדורה system מריצה את הארגומנט שספקנו לה כמו פקודה למערכת ההפעלה. היא מחזירה true אם הפקודה הצליחה ואת ה-exit status 0 ומחזירה false אם הפקודה נכשלה והחזירה exit status שונה מ-0. הפלט של הפקודה יופיע ב-standard output.

(system "ls")  
;lists current directory 
 
(define fname "spot") 
 
(system (string-append "test -f " fname))  
;tests if file `spot' exists 
 
(system (string-append "rm -f " fname))  
;removes `spot' 
(system "ls")  
;lists current directory 
 
(define fname "spot") 
 
(system (string-append "test -f " fname))  
;tests if file `spot' exists 
 
(system (string-append "rm -f " fname))  
;removes `spot' 

הדוגמא לעיל זהה לדוגמא הזו:

(file-exists? fname)

(delete-file fname)



לתחילת העמוד

11.3 משתני סביבה

הפרוצדורה getenv מחזירה את המסלול של משתנה הסביבה:

(getenv "HOME") 
=> "/home/dorai" 
 
(getenv "SHELL") 
=> "/bin/bash"