560 likes | 728 Views
ברוכים הבאים למת"ם. מבוא לתכנות מערכות - 234122. הוכן ע"י עומר סטרולוביץ מבוסס על עבודתם של ואדים אייזנברג ולי-טל משיח. תרגול מס' 1. מנהלה התחברות ל- stud עבודה בסביבת UNIX. מטרות הקורס. לימוד שיטות וכלים עבור פיתוח תוכנה גדולה התנסות בכתיבת תוכנה ובדיקתה
E N D
ברוכים הבאים למת"ם מבוא לתכנות מערכות - 234122 הוכן ע"י עומר סטרולוביץ מבוסס על עבודתם של ואדים אייזנברג ולי-טל משיח
תרגול מס' 1 מנהלה התחברות ל-stud עבודה בסביבת UNIX
מטרות הקורס • לימוד שיטות וכלים עבור פיתוח תוכנה גדולה • התנסות בכתיבת תוכנה ובדיקתה • המשך לימוד עקרונות התכנות ממבוא למדעי המחשב • לימוד תכונות מתקדמות של שפות התכנות C/C++ מבוא לתכנות מערכות - 234122
מנהלה • אתר הבית: • http://webcourse.cs.technion.ac.il/234122 • האתר מכיל מידע רב וחשוב המתעדכן במהלך הסמסטר. • קבלת e-mail מהאתר: • ודאו שאתם מקבלים עדכונים מהאתר ע"י כניסה ל-http://grades.cs.technion.ac.il מעבר ללשונית Settings/Auto update ובדיקה שתחת Announcements Update מסומן e-mail. מבוא לתכנות מערכות - 234122
מבנה הציון הסופי • 70% מבחן סופי • 30% תרגילי הבית - תקף • 4 תרגילי בית על נושאי הקורס השונים (+ תרגיל הכנה ללא ציון) • התרגילים מורכבים משאלות יבשות (כתיבת פתרון) ורטובות (כתיבת קוד, הרצתו ובדיקתו) • חובה לעבור את המבחן הסופי • ציון ש"ב לא ייחשב במקרה של ציון קטן מ-55 במבחן מבוא לתכנות מערכות - 234122
תרגילי בית • תרגילי הבית בקורס דורשים הרבה עבודה - מומלץ לעשותם בזוגות • ניתן למצוא שותף תחת לשונית Find a partner באתר הקורס. • בכל סמסטר נעזבים מספר אנשים ע"י השותף שלהם. • שימרו על קשר טוב עם השותף – זהו חלק מתהליך פיתוח התוכנה. • סגל הקורס לא יטפל בבעיות בין שותפים ולא ינתנו הקלות בהקשר זה • אין הארכות – עמידה במסגרת זמנים היא חלק חשוב מתהליך פיתוח התוכנה • הארכות על בסיס אישי ינתנו רק עבור מקרים קיצוניים או שירות מילואים פעיל מבוא לתכנות מערכות - 234122
תרגילי הבית • שימו לב: תרגיל מוכן הוא תרגיל שנבדק ואכן עובד • הקפידו לבדוק את נכונות הקוד שלכם לפני ההגשה – נקודות אינן ניתנות לפי זמן העבודה על התרגיל אלא לפי כמות הבדיקות שבהן הוא עומד • גיבוי: הקפידו לגבות באופן שוטף את הקבצים לא ינתנו הקלות לסטודנטים שאיבדו את עבודתם בגלל הזנחה מבוא לתכנות מערכות - 234122
תרגילי הבית • הגשה: • עקבו במדויק אחרי הוראות ההגשה לכל תרגיל המצוינות בתרגיל. הן מפרטות מה יש להגיש מודפס וכיצד יש להגיש את הקבצים דרך האתר. • אי ציות להוראות אלו יגרור הורדת ציון • שמרו את מספר האישור עבור ההגשה האלקטרונית • מומלץ לשמור עותק של הקבצים על ספרית הבית ב-t2/studולא לגעת בו למקרה של טעויות עם ההגשה האלקטרונית מבוא לתכנות מערכות - 234122
ביקורות קוד • לאחר תרגילים 2 ו-4 ייערכו ביקורות קוד (Code Reviews) להגשות • לכל זוג תתבצע פגישה עם אחד המתרגלים בה נעבור על הקוד בצורה אישית • מומלץ לבוא לביקורת, זו הזדמנות נדירה לקבל פידבק אישי על הקוד שכתבתם ועל בעיות בסגנונו שלא ניתן להעיר עליהן בדרכים אחרות מבוא לתכנות מערכות - 234122
תרגילי בית - העתקות • בקורס יופעלו שיטות מתקדמות למציאה אוטומטית של העתקות • תרגילי הבית ייבדקו גם בבדיקה ידנית על למציאת העתקות • מי שייתפס כמעתיק או כמי שנתן את תרגיל הבית שלו להעתיקיהיה צפוי לעונשים חמורים • כולל שאלות יבשות מבוא לתכנות מערכות - 234122
נושאי התרגולים • תרגול 1: עבודה בסיסית בסביבת UNIX • תרגולים 2-5: תכונות מתקדמות של C ו-Abstract Data Types • תרגולים 6-7: עבודה ב-UNIX וכתיבת תסריטים • תרגולים 8-12: C++ • תרגולים 13-14: חזרה ושאלות ממבחנים מבוא לתכנות מערכות - 234122
התחברות ל-stud עבודה על השרת אפשרויות התחברות עבודה במחשב אישי מבוא לתכנות מערכות - 234122
התחברות ל-stud • תרגילי הבית יבדקו ע"י הידור והרצת הקוד המוגש על שרת ה-stud • ידוע גם כ-t2 למרות שכתובתו היא stud.technion.ac.il • לשם כך עליכם לדעת כיצד ניתן להתחבר אל השרת ולעבוד עליו • תכנית שעובדת על המחשב הביתי שלכם אינה בהכרח נכונה • עליכם לוודא את נכונותה בעזרת הרצתה על השרת • ב-stud קיימת מערכת הפעלה מסוג UNIX ולכן עליכם לוודא שהתכנית שלכם מתנהגת בצורה נכונה בסביבה זו מבוא לתכנות מערכות - 234122
דרכי עבודה • הדרכים הבאות הן הדרכים המומלצותלעבוד בקורס • ניתן לעבוד גם בכל צורה אחרת, כל עוד התוצאה הסופית עובדת כנדרש • עם זאת, סגל הקורס לא יעזור בבעיות הצצות מעבודה בכלים אחרים • כדי לכתוב את התוכנה כך שתעבוד נכון על ה-stud קיימות שתי אפשרויות: • עבודה על השרת - כתיבת הקוד ובדיקתו על ה-stud לאורך כל הדרך • עבודה על מחשב אישי וביצוע בדיקות על השרת מדי פעם מבוא לתכנות מערכות - 234122
עבודה על השרת • בשיטה זו נשתמש בתוכנה כלשהי כדי להתחבר אל השרת דרך הרשת • לאחר ביצוע ההתחברות נקבל חלון טרמינל אשר מקושר לחשבוננו במחשב המרוחק • כל הפקודות שיוכנסו לטרמינל מתבצעות על המחשב המרוחק. • עיקר העבודה יהיה בעזרת מנשק טקסטואלי • ניתן גם להריץ תכניות עםמנשק גרפי מבוא לתכנות מערכות - 234122
אפשרויות התחברות • ניתן להתחבר ל-stud בשיטות הבאות: • התחברות בעזרת SSH: • עבור מחשבים בסביבת windows יש להוריד את התוכנה מהכתובת הבאה: ftp://ftp.cs.technion.ac.il/pub/ssh-client/sshclient.exe • עבור מחשבים בסביבת לינוקס (או מק( ניתן פשוט להשתמש בפקודה ssh מחלון טרמינל. • התחברות בעזרת Go-Global (עבור Windows): • גלישה לכתובת http://www.technion.ac.il/GG/IPviewer.html • עובד רק עם Internet Explorer מבוא לתכנות מערכות - 234122
עבודה במחשב אישי • עבודה על השרת אינה נוחה בגלל העומס הרב על ה-stud. • ניתן לעבוד על מחשב בבית או בחווה ולהעביר את הקוד אל ה-stud • שימו לב שייתכנו הבדלים בין המחשבים ולכן מומלץלבדוק את נכונות הקוד על ה- studאחת לכמה זמן (ולא רק בסוף העבודה) מבוא לתכנות מערכות - 234122
עבודה במחשב אישי • עבודה ב-Eclipse CDT. • סביבת העבודה המומלצת ע"י צוות הקורס • משתמשת בקומפיילר דומה לזה שב-stud • ניתנת להרצה על windows או לינוקס • מותקנת במחשבי החווה • עבודה ב-VisualStudio • ניתן להורדה בחינם מ-MSDNAA מבוא לתכנות מערכות - 234122
עבודה במחשב אישי • עבודה במחשבי הלינוקס בחווה (או התקנת לינוקס): • השימוש בלינוקס יכול להקל מאוד על מלאכת הדיבוג מאחר וכמות ההבדלים בין מחשב המריץ לינוקס ל- studקטנה יותר • התקנת Cygwin: • סביבה המדמה את UNIX עבור מחשבי Windows • מומלצת עבור תרגיל בית 3 מבוא לתכנות מערכות - 234122
מידע נוסף • כדי להקל על השימוש במגוון הכלים הגדול אתר הקורס מכיל מספר מדריכיםהמסבירים את הפרטים הטכניים עבור שימוש בכלים הללו: • מדריך התחברות ל-stud: מפרט את הדרכים השונות לעבודה (כולל התקנת Cygwin) • מדריך עבור Eclipse CDT: מסביר את תהליך ההתקנה ויצירת פרויקט ראשון • המדריכים נמצאים באתר תחת Course Material, Guides. • בנוסף, ייערכו 3 תרגולי עזר אשריתמקדו בהפעלה טכנית של כליםהדרושים בקורס • זמן התרגולים יוכרז בהמשך • שקפי התרגולים זמינים באתר תחתCourse Material, Auxiliary Tutorials מבוא לתכנות מערכות - 234122
עבודה בסביבת UNIX מהי מערכת הפעלה? מערכת הקבצים ב-UNIX עבודה בחלון Shell מבוא לתכנות מערכות - 234122
מהי מערכת הפעלה? • מערכת הפעלה מהווה שכבת ביניים בין החומרה לבין התוכנה • מאפשרת גישה נוחה למחשב עבור משתמשים ומתכנתים • עבור המשתמש: מספקת מנשק נוחלמחשב ושירותים בסיסיים • עבור המתכנת: מספקת מנשקים לניהול זיכרון,קבצים והתקני חומרה נוספים • דוגמאות למערכות הפעלה: • Windows • Ubuntu • OSX • Android • iOS מבוא לתכנות מערכות - 234122
מהי UNIX? • UNIX הינה משפחה של מערכות הפעלה • יתרון מערכות ההפעלה ממשפחה זו הוא בקיומו של סטנדרט נוח עבור השירותים אותן היא מספקת (הקרוי POSIX) • רוב מערכות ההפעלה המוכרות לכם עומדות בסטנדרט של UNIX • המפורסמת ביותר כיום היא Linux • יוצאת הדופן היא כמובן Windows • בפרט - מערכת ההפעלה על שרת ה-studעליו נבדקים תרגילי הבית היא Linux. מבוא לתכנות מערכות - 234122
מערכת הקבצים ב-UNIX • מערכת ההפעלה אחראית בין השאר על ארגון הקבצים במחשב • מערכת הקבצים ב-UNIX מורכבת מקבצים ותיקיות – בדומה ל-Windows • קובץהוא אוסף סדור של תווים • תיקיה(Directory) מאפשרת שמירת מספר קבצים ותיקיות נוספות בצורה מסודרת • לכל קובץ או תיקיה יש שם • אין מגבלות על מבנה השם (לא חייבת להיות סיומת) • מקובל ששם קובץ הוא מהצורה <name>.<extension> • למשל test.c עבור קובץ מקור בשפת C • אין ב-UNIX סיומת מיוחדת לקובץ הרצה (כמו exe ב-Windows) • כל קובץ או תיקיה נמצאים בתוך תיקיה כלשהי • מלבד התיקיה הראשית מבוא לתכנות מערכות - 234122
התייחסות לקבצים • כדי להתייחס לקובץ יש להשתמש בשמו • התיקיה הראשית נקראת "/" • ניתן להתייחס לקובץ ע"י שמו המוחלט: • /usr/mtm/exercise1/main.c • התו "/" משמש כסימן מפריד להגדרת מסלול במערכת הקבצים • בכל חיבור ובכל זמן קיימת תיקיה המוגדרת כתיקיה הנוכחית • ניתן להתייחס לקובץ על ידי שם יחסי מהתיקיה הנוכחית: • main.cאם התיקיה הנוכחית היא /usr/mtm/exercise1 • exercise1/main.c אם התיקיה הנוכחית היא /usr/mtm מבוא לתכנות מערכות - 234122
ריבוי משתמשים • UNIX היא מערכת הפעלה מרובת משתמשים • לכל משתמש במערכת קיימת תיקית בית • בהתחברות למערכת התיקיה הנוכחית היא תיקית הבית של המשתמש מבוא לתכנות מערכות - 234122
קיצורים • בנוסף מוגדרים הקיצורים הבאים עבור שמות קבצים: • .- נקודה אחת מייצגת את התיקיה הנוכחית • ..- שתי נקודות מייצגות את תיקיית האב • התיקיה בה נמצאת התיקיה הנוכחית • ~- מייצגת קיצור לתיקיית הבית של המשתמש • ~user- מייצגת קיצור לתיקיית הבית של המשתמש user • למשל ~mtm היא תיקית הבית של הקורס בשרת ה-stud • ניתן להשתמש בקיצור * כדי להתייחס למספר קבצים בבת אחת ע"י שימוש בתבניות, למשל: • *מתייחס לכל הקבצים • *.txtיותאם לכל הקבצים ששמם מסתיים ב-".txt" מבוא לתכנות מערכות - 234122
דוגמה • נתון מבנה של מערכת קבצים לדוגמה ב-UNIX: • למה מתייחסות המחרוזות הבאות? /usr/uri/progs/Hello.c /usr/uri/progs/Matam progs ~/progs ./hw1 ../hw2 ~ari/progs ~mtm/public/1011a/ex1 ~/progs/* / (root) tmp bin usr ari uri progs progs Hello.c Matam hw1 hw2 מבוא לתכנות מערכות - 234122
עבודה בחלון ה-Shell • לאחר ההתחברות מתקבל חלון טרמינל • בחלון זה יכול המשתמש להכניס את הפקודה הבאה למחשב ולקבל את הפלט עבור פקודה זו • הכנסת פקודה מתבצעת ע"י רישום שמה והפרמטרים שלה ולחיצה על Enter • לכל הפקודות יש את המבנה הבא: > command [arg1] [arg2] [arg3] ... • מספר הארגומנטים לפקודה משתנה בהתאם לפקודה ויכול להיות כל מספר (כולל 0) • בשביל להתנתק בכל שלב ניתן לסגור את חלון הטרמינל או לרשום את הפקודה exit. prompt (לא מקלידים אותו) שם הפקודה לביצוע ארגומנטים לפקודה מבוא לתכנות מערכות - 234122
פקודות בסיסיות ב-UNIX • כדי להדפיס תוכן של תיקיה נשתמש בפקודה ls: > ls[flags][files] • ניתן לרשום פשוט ls עבור הדפסת תוכן התיקיה הנוכחית • ניתן להוסיף את שם התיקיות שאת תוכנןנרצה להדפיס • לרוב הפקודות שנלמד אפשר להוסיף פרמטרים נוספים הנקראים דגלים: • למשל הדגל -l עבור הפקודה ls יגרום להדפסת הפלט כך שכל קובץ מופיע בשורת פלט נפרדת עם מידע נוסף • הדגל -a יגרום לפקודה להדפיס גם פריטים נסתרים • פריט נסתר ב-UNIX הוא כל קובץ או תיקיה ששמם מתחיל ב-. (נקודה) • בהרבה מהפקודות ניתן לשלב מספר דגלים בבת-אחת • כאשר הדגלים מיוצגים ע"י אות יחידה • למשל הפקודה ls -a -lזהה לפקודה ls -al מבוא לתכנות מערכות - 234122
ls - דוגמאות • >ls • hello.cprivate/ story.txt • >lsprivate • example.txt • >ls -l • total 12 • -rw-r--r-- 1 mtmusers 3047 Jun 20 10:35 hello.c • drwx------ 2 mtmusers 4096 Sep 1 14:28 private/ • -rw------- 1 mtmusers 1081 Sep 1 14:28 story.txt • >ls -al • total 28 • drwx------ 3 mtmusers 4096 Sep 1 14:29 ./ • drwx--x--x 50 mtmusers 12288 Sep 1 10:52 ../ • -rw-r--r-- 1 mtmusers 3047 Jun 20 10:35 hello.c • drwx------ 2 mtmusers 4096 Sep 1 14:28 private/ • -rw------- 1 mtmusers 1081 Sep 1 14:28 story.txt מבוא לתכנות מערכות - 234122
ניהול תיקיות • הדפסת שם התיקיה הנוכחית ע"י הפקודה pwd: > pwd • ניתן להחליף את התיקיה הנוכחית ע"י הפקודה cd: > cd <directory> • ניתן ליצור תיקיה חדשה ע"י הפקודה mkdir: > mkdir <name> • ניתן למחוק תיקיה ריקהע"י הפקודה rmdir: > rmdir <directory> מבוא לתכנות מערכות - 234122
ניהול תיקיות - דוגמאות מעבר לתיקית הבית בעזרת הקיצור ~ • >cd ~ • >pwd • /usr/030/moshe • >cd matam • matam: No such file or directory. • >mkdir matam • >cd matam • >pwd • /usr/030/moshe/matam • >cd .. • >rmdir matam בכל הפקודות, אם אחד הפרמטרים אינו תקין תודפס הודעת שגיאה מתאימה והפקודה תופסק מעבר לתיקית האב בעזרת הסימון .. מבוא לתכנות מערכות - 234122
פקודות לניהול קבצים • הפקודה cpמשמשת להעתקת קבצים או תיקיות • ניתן להשתמש בפקודה בשתי דרכים: > cp[options] <file1> <file2> • יוצרת העתק חדש של file1 בשם file2 > cp [options] <file1> ... <file> <directory> • יוצרת העתקים חדשים של כל הקבצים בתיקיה קיימת • אם קיים כבר קובץ בעל השם המבוקש הוא נמחק ומוחלף (overwritten) • דגלים שימושיים: • -r: מבצע העתקה רקורסיבית של תיקיות ותוכנן • ללא דגל זה תיקיות אינן מועתקות • -i: מבקש אישור לפני מחיקת קובץ קיים מבוא לתכנות מערכות - 234122
פקודות לניהול קבצים • הפקודה mvמשמשת להעברתקבצים או תיקיות או שינוי שמם • ניתן להשתמש בפקודה בשתי דרכים: > mv [options] <file1> <file2> • משנה את שמו של file1 ל-file2 • עובדת גם עבור תיקיות > mv [options] <file1> ... <file> <directory> • אם הפרמטר האחרון הוא שם של תיקיה קיימת הפקודה מעבירה את הקבצים לתוכה • אם קיים כבר קובץ בעל השם המבוקש הוא נמחק ומוחלף (overwritten) • דגלים שימושיים: • -i: מבקש אישור לפני מחיקת קובץ קיים מבוא לתכנות מערכות - 234122
פקודות לניהול קבצים • הפקודה rmמאפשרת מחיקת קבצים או תיקיות: > rm [ options ] <files> • דגלים שימושיים: • -r: מבצע מחיקה רקורסיבית של תיקיות • ללא דגל זה ספריות אינן נמחקות • -i: מבקש אישור לפני מחיקת קובץ • -f: לא מבקש אישור בשום מקרה • שימו לב: לא ניתן לשחזר קבצים שנמחקו • הפקודה הבאה מוחקת את כל הקבצים והספריות במיקום הנוכחי ועלולה להיות הרסנית למדי: > rm-rf * מבוא לתכנות מערכות - 234122
פקודות לניהול קבצים - דוגמאות • >ls • hello.cprivate/ story.txt • >cphello.cprog.c • >ls • hello.cprivate/ prog.c story.txt • >mv prog.cprivate/program.c • >ls • hello.cprivate/ story.txt • >lsprivate • example.txt program.c • >mv hello.c story.txt private • >ls • private/ מבוא לתכנות מערכות - 234122
פקודות לניהול קבצים - דוגמאות • >lsprivate • example.txt hello.cprogram.c story.txt • >rm -i private/story.txt • rm: removeregular file `private/story.txt'? y • >rmprivate • rm: cannotremove directory `private': Is a directory • >rm -ri private • rm: descend into directory `private'? n • >rm -rfprivate • >ls • > מבוא לתכנות מערכות - 234122
הדפסת תוכן של קבצים • הפקודה catמדפיסה למסך את תוכן הקובץ > cat <file> • אם הקובץ גדול המסך יגלול ולא נוכל לראות בנוחות את התחלתו • אם לא מופיע שם קובץ הפקודה מדפיסה את הקלט הסטנדרטי (בד"כ קלט מהמקלדת) • בהמשך נראה למה זה מועיל • הפקודה moreמדפיסה למסך את התוכן, אך עוצרת כאשר נגמר המקום > more <file> • לחיצה על enter תגרום להדפסת שורה נוספת • לחיצה על q תפסיק את ההדפסה • הפקודה lessהיא שיפור של more ומאפשרת גלילה בשני הכיוונים ועוד אפשרויות > less <file> מבוא לתכנות מערכות - 234122
הרשאות קבצים • לכל קובץ יש הרשאות הקובעות למי מותרת הגיש לקובץ ולצורך אילו פעולות. • ישנם 3 סוגי משתמשים: • User- בעל הקובץ. • בעל הקובץ הוא המשתמש שיצר את הקובץ במערכת. • Group- משתמש אשר שייך לקבוצה של בעל קובץ • הגדרת קבוצות משתמשים הינה מחוץ לחומר הקורס • Other- שאר המשתמשים במערכת • לכל סוג משתמש יש 3 הרשאות שונות: • Read- מאפשרת קריאת תוכן הקובץ (כולל העתקתו) • Write- מאפשרת שינוי הקובץ הקיים • Execute- מאפשרת להריץ את הקובץ מבוא לתכנות מערכות - 234122
הרשאות קבצים • כדי לראות מהן ההרשאות ניתן להשתמש בפקודה ls -l, לדוגמה: > ls -l -rwx--x--x 1 mtm users 6647 Aug 31 17:25 a.out* -rw-r--r-- 1 mtm users 3047 Jun 20 10:35 hello.c drwx------ 2 mtm users 4096 Aug 31 17:23 private/ drwxrwxrwx 2 mtm users 4096 Aug 31 17:23 public/ • שורת ההרשאות עבור כל קובץ היא רצף האותיות הבא: drwxrwxrwx • אם מופיעה אות ההרשאה קיימת • אם מופיע מקף ההרשאה אינה קיימת מצייני ההרשאות user group other התו d מציין אם מדובר בתיקיה מבוא לתכנות מערכות - 234122
שינוי הרשאות קבצים • בעל הקובץ רשאי לשנות את ההרשאות של הקובץ • שינוי ההרשאות ניתן בעזרת הפקודה chmod: > chmod <mode> <files> • <mode> - שרשור תווים המורכב מ-who, opcode ו-permission • אם לא מצוין who, ברירת המחדל היא a. WhoOpcodePermission u - User + - Add permission r- Read g - Group - - Remove permission w - Write o - Other = - Assign permission x - Execute a - All • דוגמאות: > chmodu+x file > chmod g-w,o-w file > chmod =r file > chmod u=rwx, g=rx, o=r file --------- rwxrwxrwx --x------ rwxr-xr-x r--r--r-- rwxr-xr-- מבוא לתכנות מערכות - 234122
הרשאות עבור תיקיות • עבור תיקיות להרשאות המשמעות שונה: • Read– הרשאה לראות את רשימת הקבצים • Write– הרשאה של יצירת/מחיקתתיקייה או שינויקבציםבתיקייה • Execute– הרשאת כניסהלתיקייה • לדוגמה, מה ההרשאות הנדרשות לביצוע כל אחת מהפעולות הבאות? > cd my_dir > mkdirdirectory > rmdirdirectory > ls Execute Write Write Read מבוא לתכנות מערכות - 234122
הפקודה man • המידע שהוצג כאן לגבי כל אחד מהפקודות חלקי • ניתן בכל שלב להשתמש בפקודה man כדי לראות קובץ עזרה עבור פקודה מסוימת. > man <command name> • ה-man של פקודה מכיל את צורת ההפעלה שלה, דגלים אפשריים ועוד. • למשל: > man ls > man rm > man man מבוא לתכנות מערכות - 234122
ערוצי קלט/פלט • לכל תכנית יש ערוצי קלט וערוצי פלט – אלו הם הדרכים בהם היא מקבלת קלט ומציגה את הפלט שלה • לכל תכנית קיימים ב-UNIX 3 ערוצי ברירת מחדל: • ערוץ הקלט הסטנדרטי: ממנו מקבלת התכנית את הקלט • ברירת המחדל היא הפקודות המוכנסות בחלון הטרמינל • ערוץ הפלט הסטנדרטי: אליו מודפס הפלט • ברירת מחדל היא הדפסה לחלון הטרמינל • ערוץ השגיאות הסטנדרטי: ערוץ פלט נוסף המשמש להדפסת הודעות שגיאה • ברירת המחדל היא הדפסה לחלון הטרמינל • ערוצי קלט/פלט נוספים יכולים להיות למשל קבצים, נתייחס למקרים אלו בהמשך הקורס מבוא לתכנות מערכות - 234122
הפניית קלט/פלט • בעת קריאה לפקודה בטרמינל ניתן להפנות את ערוצי הקלט והפלט הסטנדרטיים לקבצים • הפניית ערוץ הפלט הסטנדרטי נעשית באמצעות האופרטור "<": > command [arguments] > <output_file> • הפניית ערוץ הקלט הסטנדרטי נעשית באמצעות האופרטור ">": > command [arguments] < <input_file> • הפניית ערוץ הפלט וערוץ השגיאות הסטנדרטי נעשית באמצעות באופרטור "&<": > command [arguments] >& <output_and_errors_file> • אם ננסה לכתוב לתוך קובץ קיים הפקודה לא תתבצע • ניתן להוסיף "!" כדי למחוק את הקובץ הקיים ולהחליפו • אם ברצוננו להוסיף את הפלט להמשכו של קובץ קיים ניתן להשתמש ב-">>" או ">>&" (בהתאמה) • במקרה זה יש להוסיף "!" אם הקובץ לא קיים עדיין מבוא לתכנות מערכות - 234122
הפניית קלט/פלט • ניתן להפנות מספר ערוצים בבת אחת • הפניית הקלט והפלט יחדיו נעשית כך: > command [arguments] < input > output • כדי להפנות את ערוץ השגיאות בנפרד מערוץ הפלט ניתן לרשום: > (command [arguments] > output) >& errors • כדי להפנות כל אחד מהערוצים לקובץ שונה, תוך וידוא שהקבצים ירשמו מחדש אם הם קיימים יש לכתוב: > (command [arguments] < input >! output) >&! errors מבוא לתכנות מערכות - 234122
הפניית קלט/פלט - דוגמאות • בעזרת הפניית קלט/פלט ניתן לעשות שימושים שונים בפקודה cat למשל: >cat >file.txt Hello world! >ls file.txt >cat file.txt Hello world! >cat file.txt > file2.txt >cat file2.txt Hello world! >cat file.txt >> file2.txt >cat file2.txt Hello world! Hello world! הכנסת קלט מהמקלדת מבוא לתכנות מערכות - 234122
הפניית קלט/פלט - דוגמאות >cat < file2.txt > file.txt file.txt: File exists. >cat < file2.txt >! file.txt >cat file.txt Hello world! Hello world! >rmdirfoo rmdir: `foo': No such file or directory >rmdirfoo > output.txt rmdir: `foo': No such file or directory >rmdirfoo >& error.txt >cat error.txt rmdir: `foo': No such file or directory הודעת השגיאה נשלחת לערוץ השגיאות ולכן אינה מופנית לקובץ מבוא לתכנות מערכות - 234122
תכנית ראשונה ב-stud הידור תכניות ב-stud הרצת ודיבוג תכניות מבוא לתכנות מערכות - 234122