Download presentation
Presentation is loading. Please wait.
1
ברוכים הבאים למת"ם מבוא לתכנות מערכות - 234122
2
מנהלה התחברות ל-stud עבודה בסביבת UNIX
תרגול מס' 1 מנהלה התחברות ל-stud עבודה בסביבת UNIX
3
מטרות הקורס לימוד שיטות וכלים עבור פיתוח תוכנה גדולה
התנסות בכתיבת תוכנה ובדיקתה המשך לימוד עקרונות התכנות ממבוא למדעי המחשב לימוד תכונות מתקדמות של שפות התכנות C/C++ מבוא לתכנות מערכות
4
מנהלה אתר הבית: קבלת e-mail מהאתר:
האתר מכיל מידע רב וחשוב המתעדכן במהלך הסמסטר. קבלת מהאתר: ודאו שאתם מקבלים עדכונים מהאתר ע"י כניסה ל- מעבר ללשונית Settings/Auto update ובדיקה שתחת Announcements Update מסומן . מבוא לתכנות מערכות
5
מבנה הציון הסופי 70% מבחן סופי 30% תרגילי הבית - תקף
חומר פתוח 30% תרגילי הבית - תקף 4 תרגילי בית על נושאי הקורס השונים (+ תרגיל הכנה ללא ציון) התרגילים מורכבים משאלות יבשות (כתיבת פתרון) ורטובות (כתיבת קוד, הרצתו ובדיקתו) חובה לעבור את המבחן הסופי ציון ש"ב לא ייחשב במקרה של ציון קטן מ-55 במבחן מבוא לתכנות מערכות
6
תרגילי בית תרגילי הבית בקורס דורשים הרבה עבודה - מומלץ לעשותם בזוגות
ניתן למצוא שותף תחת לשונית Find a partner באתר הקורס. בכל סמסטר נעזבים מספר אנשים ע"י השותף שלהם. שימרו על קשר טוב עם השותף – זהו חלק מתהליך פיתוח התוכנה. סגל הקורס לא יטפל בבעיות בין שותפים ולא ינתנו הקלות בהקשר זה אין הארכות – עמידה במסגרת זמנים היא חלק חשוב מתהליך פיתוח התוכנה הארכות על בסיס אישי ינתנו רק עבור מקרים קיצוניים או שירות מילואים פעיל מבוא לתכנות מערכות
7
תרגילי הבית שימו לב: תרגיל מוכן הוא תרגיל שנבדק ואכן עובד
הקפידו לבדוק את נכונות הקוד שלכם לפני ההגשה – נקודות אינן ניתנות לפי זמן העבודה על התרגיל אלא לפי כמות הבדיקות שבהן הוא עומד גיבוי: הקפידו לגבות באופן שוטף את הקבצים לא ינתנו הקלות לסטודנטים שאיבדו את עבודתם בגלל הזנחה מבוא לתכנות מערכות
8
תרגילי הבית הגשה: עקבו במדויק אחרי הוראות ההגשה לכל תרגיל המצוינות בתרגיל. הן מפרטות מה יש להגיש מודפס וכיצד יש להגיש את הקבצים דרך האתר. אי ציות להוראות אלו יגרור הורדת ציון שמרו את מספר האישור עבור ההגשה האלקטרונית מומלץ לשמור עותק של הקבצים על ספרית הבית ב-t2 ולא לגעת בו למקרה של טעויות עם ההגשה האלקטרונית מבוא לתכנות מערכות
9
ביקורות קוד לאחר תרגילים 2 ו-4 ייערכו ביקורות קוד (Code Reviews) להגשות לכל זוג תתבצע פגישה עם אחד המתרגלים בה נעבור על הקוד בצורה אישית אין חובה להגיע לביקורת אך יינתנו נקודות בונוס על נוכחות מומלץ לבוא לביקורת, זו הזדמנות נדירה לקבל פידבק אישי על הקוד שכתבתם ועל בעיות בסגנונו שלא ניתן להעיר עליהן בדרכים אחרות מבוא לתכנות מערכות
10
תרגילי בית - העתקות בקורס יופעלו שיטות מתקדמות למציאה אוטומטית של העתקות תרגילי הבית ייבדקו גם בבדיקה ידנית על למציאת העתקות מי שייתפס כמעתיק או כמי שנתן את תרגיל הבית שלו להעתיק יהיה צפוי לעונשים חמורים כולל שאלות יבשות מבוא לתכנות מערכות
11
נושאי התרגולים תרגול 1: עבודה בסיסית בסביבת UNIX
תרגולים 2-5: תכונות מתקדמות של C ו-Abstract Data Types תרגולים 6-7: עבודה ב-UNIX ו-C-Shell תרגולים 8-12: C++ תרגולים 13-14: חזרה ושאלות ממבחנים מבוא לתכנות מערכות
12
עבודה על השרת אפשרויות התחברות עבודה במחשב אישי
התחברות ל-stud עבודה על השרת אפשרויות התחברות עבודה במחשב אישי מבוא לתכנות מערכות
13
התחברות ל-stud תרגילי הבית יבדקו ע"י הידור והרצת הקוד המוגש על שרת ה-stud ידוע גם כ-t2 למרות שכתובתו היא stud.technion.ac.il לשם כך עליכם לדעת כיצד ניתן להתחבר אל השרת ולעבוד עליו תכנית שעובדת על המחשב הביתי שלכם אינה בהכרח נכונה עליכם לוודא את נכונותה בעזרת הרצתה על השרת ב-stud קיימת מערכת הפעלה מסוג UNIX ולכן עליכם לוודא שהתכנית שלכם מתנהגת בצורה נכונה בסביבה זו מבוא לתכנות מערכות
14
דרכי עבודה הדרכים הבאות הן הדרכים המומלצות לעבוד בקורס
ניתן לעבוד גם בכל צורה אחרת, כל עוד התוצאה הסופית עובדת כנדרש עם זאת, סגל הקורס לא יעזור בבעיות הצצות מעבודה בכלים אחרים כדי לכתוב את התוכנה כך שתעבוד נכון על ה-stud קיימות שתי אפשרויות: עבודה על השרת - כתיבת הקוד ובדיקתו על ה-stud לאורך כל הדרך עבודה על מחשב אישי וביצוע בדיקות על השרת מדי פעם מבוא לתכנות מערכות
15
עבודה על השרת בשיטה זו נשתמש בתוכנה כלשהי כדי להתחבר אל השרת דרך הרשת
לאחר ביצוע ההתחברות נקבל חלון טרמינל אשר מקושר לחשבוננו במחשב המרוחק כל הפקודות שיוכנסו לטרמינל מתבצעות על המחשב המרוחק. עיקר העבודה יהיה בעזרת מנשק טקסטואלי ניתן גם להריץ תכניות עם מנשק גרפי המילה הנכונה בעברית היא מנשק - מהשורש י.ש.ק. ולא ממשק. מצד שני, אין הרבה מקומות שמישהו מקפיד בהם על שימוש במילה הנכונה. למנשק טקסטואלי יתרונות בגמישותו, קל להריץ ממנו כל תכנית ולחבר תכניות כדי לבצע פעולות מסובכות בשניות. מצד שני, קשה להתרגל למנשק ולבצע בו פעולות שלא יודעים כיצד לבצען. מומלץ להתרגל לעבודה במנשק זה כי היא הכרחית ברמה כלשהי ברוב התחומים בעולם פיתוח התוכנה (כן, גם בעבודה בסביבת Windows) הרצת תכניות עם מנשק גרפי היא רעיון נהדר, אבל בפועל שרת ה-stud אינו חזק ובנוסף הוא עמוס (ואף עמוס במיוחד בימים שלפני הגשת תרגיל במת"מ). על כן תכניות גרפיות אינן רצות עליו בצורה אופטימלית תמיד ולכן בכל מקרה חשוב לדעת כיצד לעבוד במנשק טקסטואלי. מבוא לתכנות מערכות
16
אפשרויות התחברות ניתן להתחבר ל-stud בשיטות הבאות: התחברות בעזרת SSH:
עבור מחשבים בסביבת windows יש להוריד את התוכנה מהכתובת הבאה: ftp://ftp.cs.technion.ac.il/pub/ssh-client/sshclient.exe עבור מחשבים בסביבת לינוקס (או מק( ניתן פשוט להשתמש בפקודה ssh מחלון טרמינל. התחברות בעזרת Go-Global (עבור Windows): גלישה לכתובת עובד רק עם Internet Explorer מבוא לתכנות מערכות
17
עבודה במחשב אישי עבודה על השרת אינה נוחה בגלל העומס הרב על ה-stud.
מבוא לתכנות מערכות
18
עבודה במחשב אישי עבודה ב-Eclipse CDT.
סביבת העבודה המומלצת ע"י צוות הקורס משתמשת בקומפיילר דומה לזה שב-stud ניתנת להרצה על windows או לינוקס מותקנת במחשבי החווה עבודה במחשבי הלינוקס בחווה (או התקנת לינוקס): השימוש בלינוקס יכול להקל מאוד על מלאכת הדיבוג מאחר וכמות ההבדלים בין מחשב המריץ לינוקס ל- studקטנה יותר התקנת Cygwin: סביבה המדמה את UNIX עבור מחשבי Windows מומלצת עבור תרגיל בית 3 (C-Shell) מבוא לתכנות מערכות
19
מידע נוסף כדי להקל על השימוש במגוון הכלים הגדול אתר הקורס מכיל מספר מדריכים המסבירים את הפרטים הטכניים עבור שימוש בכלים הללו: מדריך התחברות ל-stud: מפרט את הדרכים השונות לעבודה (כולל התקנת Cygwin) מדריך עבור Eclipse CDT: מסביר את תהליך ההתקנה ויצירת פרויקט ראשון המדריכים נמצאים באתר תחת Course Material, Guides. בנוסף, ייערכו 3 תרגולי עזר אשר יתמקדו בהפעלה טכנית של כלים הדרושים בקורס זמן התרגולים יוכרז בהמשך שקפי התרגולים זמינים באתר תחת Course Material, Auxiliary Tutorials מבוא לתכנות מערכות
20
מהי מערכת הפעלה? מערכת הקבצים ב-UNIX עבודה בחלון Shell
מבוא לתכנות מערכות
21
מהי מערכת הפעלה? מערכת הפעלה מהווה שכבת ביניים בין החומרה לבין התוכנה
מאפשרת גישה נוחה למחשב עבור משתמשים ומתכנתים עבור המשתמש: מספקת מנשק נוח למחשב ושירותים בסיסיים עבור המתכנת: מספקת מנשקים לניהול זיכרון, קבצים והתקני חומרה נוספים דוגמאות למערכות הפעלה: Windows Ubuntu OSX Android iOS מבוא לתכנות מערכות
22
מהי UNIX? UNIX הינה משפחה של מערכות הפעלה
יתרון מערכות ההפעלה ממשפחה זו הוא בקיומו של סטנדרט נוח עבור השירותים אותן היא מספקת (הקרוי POSIX) רוב מערכות ההפעלה המוכרות לכם עומדות בסטנדרט של UNIX המפורסמת ביותר כיום היא Linux יוצאת הדופן היא כמובן Windows בפרט - מערכת ההפעלה על שרת ה-stud עליו נבדקים תרגילי הבית היא Linux. לינוקס היא למעשה גרסה חופשית של מערכת הפעלה שנוצרה כתגובה לכך ש-UNIX המקורית החלה להמיכר כתשלום. לינוקס היא מערכת הפעלה בקוד פתוח, כלומר ניתן להוריד את הקוד ולקמפל אותו בעצמכם ולכן צברה פופולריות רבה בתחומים שונים לינוקס מופצת במספר הפצות, כל הפצה נראית שונה והמשותף לכולן הוא רק הגרעין (שאינו חשוף ישירות למשתמש). למשל גם Ubuntu המותקנת בחווה וגם Android, מערכת ההפעלה של גוגל לסלולרים, הן הפצות של לינוקס אך הן נראות שונות לגמרי למשתמש הפשוט. ההפצה המותקנת על שרת ה-stud נקראת Red Hat. (למען הדיוק, גרעין מערכת ההפעלה Android מבוסס על לינוקס אך עם הזמן התפתחו הבדלים בין המערכות) מבוא לתכנות מערכות
23
מערכת הקבצים ב-UNIX מערכת ההפעלה אחראית בין השאר על ארגון הקבצים במחשב
מערכת הקבצים ב-UNIX מורכבת מקבצים ותיקיות – בדומה ל-Windows קובץ הוא אוסף סדור של תווים תיקיה (Directory) מאפשרת שמירת מספר קבצים ותיקיות נוספות בצורה מסודרת לכל קובץ או תיקיה יש שם אין מגבלות על אורך השם מקובל ששם קובץ הוא מהצורה <name>.<extension> למשל test.c עבור קובץ מקור בשפת C אין ב-UNIX סיומת מיוחדת לקובץ הרצה (כמו exe ב-Windows) כל קובץ או תיקיה נמצאים בתוך תיקיה כלשהי מלבד התיקיה הראשית - התרגום עבור Directory הוא מדריך. עם זאת בחרנו להשתמש בתרגום עבור המונח הנהוג במערכות הפעלה מודרניות. כל המילים הבאות הן שמות נרדפים לתיקיה: Directory, Folder, ספריה, מדריך. שמות קבצים ב-UNIX הינם case sensitive בניגוד ל-Windows. מבוא לתכנות מערכות
24
התייחסות לקבצים כדי להתייחס לקובץ יש להשתמש בשמו
התיקיה הראשית נקראת "/" ניתן להתייחס לקובץ ע"י שמו המוחלט: /usr/mtm/exercise1/main.c התו "/" משמש כסימן מפריד להגדרת מסלול במערכת הקבצים בכל חיבור ובכל זמן קיימת תיקיה המוגדרת כתיקיה הנוכחית ניתן להתייחס לקובץ על ידי שם יחסי מהתיקיה הנוכחית: main.c אם התיקיה הנוכחית היא /usr/mtm/exercise1 exercise1/main.c אם התיקיה הנוכחית היא /usr/mtm מבוא לתכנות מערכות
25
ריבוי משתמשים UNIX היא מערכת הפעלה מרובת משתמשים
לכל משתמש במערכת קיימת תיקית בית בהתחברות למערכת התיקיה הנוכחית היא תיקית הבית של המשתמש למשל תיקית הבית של המשתמש mtm (חשבון ה-stud של צוות הקורס) היא: /tx/u/023/mtm מבוא לתכנות מערכות
26
קיצורים בנוסף מוגדרים הקיצורים הבאים עבור שמות קבצים:
. - נקודה אחת מייצגת את התיקיה הנוכחית .. - שתי נקודות מייצגות את תיקיית האב התיקיה בה נמצאת התיקיה הנוכחית ~ - מייצגת קיצור לתיקיית הבית של המשתמש ~user - מייצגת קיצור לתיקיית הבית של המשתמש user למשל ~mtm היא תיקית הבית של הקורס בשרת ה-stud ניתן להשתמש בקיצור * כדי להתייחס למספר קבצים בבת אחת ע"י שימוש בתבניות, למשל: * מתייחס לכל הקבצים *.txt יותאם לכל הקבצים ששמם מסתיים ב-".txt" מבוא לתכנות מערכות
27
דוגמה /usr/uri/progs/Hello.c /usr/uri/progs/Matam progs ~/progs ./hw1
/ (root) Matam usr tmp ari uri progs Hello.c bin hw1 hw2 נתון מבנה של מערכת קבצים לדוגמה ב-UNIX: למה מתייחסות המחרוזות הבאות? /usr/uri/progs/Hello.c /usr/uri/progs/Matam progs ~/progs ./hw1 ../hw2 ~ari/progs ~mtm/public/1011a/ex1 ~/progs/* מבוא לתכנות מערכות
28
prompt (לא מקלידים אותו)
עבודה בחלון ה-Shell לאחר ההתחברות מתקבל חלון טרמינל בחלון זה יכול המשתמש להכניס את הפקודה הבאה למחשב ולקבל את הפלט עבור פקודה זו הכנסת פקודה מתבצעת ע"י רישום שמה והפרמטרים שלה ולחיצה על Enter לכל הפקודות יש את המבנה הבא: > command [arg1] [arg2] [arg3] ... מספר הארגומנטים לפקודה משתנה בהתאם לפקודה ויכול להיות כל מספר (כולל 0) בשביל להתנתק בכל שלב ניתן לסגור את חלון הטרמינל או לרשום את הפקודה exit. נשתמש ב-<> כדי לסמן פרמטר הכרחי לפקודה ו-[] כדי לסמן פרמטר אופציונלי prompt (לא מקלידים אותו) שם הפקודה לביצוע ארגומנטים לפקודה מבוא לתכנות מערכות
29
פקודות בסיסיות ב-UNIX כדי להדפיס תוכן של תיקיה נשתמש בפקודה ls:
> ls [flags] [files] ניתן לרשום פשוט ls עבור הדפסת תוכן התיקיה הנוכחית ניתן להוסיף את שם התיקיות שאת תוכנן נרצה להדפיס לרוב הפקודות שנלמד אפשר להוסיף פרמטרים נוספים הנקראים דגלים: למשל הדגל -l עבור הפקודה ls יגרום להדפסת הפלט כך שכל קובץ מופיע בשורת פלט נפרדת עם מידע נוסף הדגל -a יגרום לפקודה להדפיס גם פריטים נסתרים פריט נסתר ב-UNIX הוא כל קובץ או תיקיה ששמם מתחיל ב-. (נקודה) בהרבה מהפקודות ניתן לשלב מספר דגלים בבת-אחת כאשר הדגלים מיוצגים ע"י אות יחידה למשל הפקודה ls -a -l זהה לפקודה ls -al מבוא לתכנות מערכות
30
ls - דוגמאות >ls hello.c private/ story.txt >ls private example.txt >ls -l total 12 -rw-r--r-- 1 mtm users 3047 Jun 20 10:35 hello.c drwx mtm users 4096 Sep 1 14:28 private/ -rw mtm users 1081 Sep 1 14:28 story.txt >ls -al total 28 drwx mtm users 4096 Sep 1 14:29 ./ drwx--x--x 50 mtm users Sep 1 10:52 ../ -rw-r--r-- 1 mtm users 3047 Jun 20 10:35 hello.c drwx mtm users 4096 Sep 1 14:28 private/ -rw mtm users 1081 Sep 1 14:28 story.txt מבוא לתכנות מערכות
31
ניהול תיקיות הדפסת שם התיקיה הנוכחית ע"י הפקודה pwd: > pwd
ניתן להחליף את התיקיה הנוכחית ע"י הפקודה cd: > cd <directory> ניתן ליצור תיקיה חדשה ע"י הפקודה mkdir: > mkdir <name> ניתן למחוק תיקיה ריקה ע"י הפקודה rmdir: > rmdir <directory> מבוא לתכנות מערכות
32
ניהול תיקיות - דוגמאות >cd ~ >pwd /usr/030/moshe >cd matam matam: No such file or directory. >mkdir matam /usr/030/moshe/matam >cd .. >rmdir matam מעבר לתיקית הבית בעזרת הקיצור ~ בכל הפקודות, אם אחד הפרמטרים אינו תקין תודפס הודעת שגיאה מתאימה והפקודה תופסק כאשר הפקודה אינה נכונה - היא אינה מובנת למערכת ומתקבלת הודעת שגיאה. הודעת השגיאה אומרת בדיוק באיזו שלב של ניתוח הפקודה חלה בעיה ואיזו, אך בשלב הראשוני מדובר במשפט סתום למדי שאינו עוזר למשתמש מתחיל. הנה כמה טיפים: חפשו באינטרנט את הודעת השגיאה No such file or directory - לא קיים קובץ או תיקיה המתאימים לאחת ממחרוזת ההתייחסות בפקודה Command not found - אין פקודה המתאימה למילה הראשונה בשורת הפקודה, שימו לב שעובר הרצת תכניות בתיקיה הנוכחית יש להוסיף "./" בתחילת הפקודה (או לבצע התאמה אישית כך שהדבר ייעשה אוטומטית) Permission denied - נסיון לבצע פעולה בניגוד להרשאות, המקרה הבולט ביותר הוא נסיון להריץ קובץ שאינו קובץ הרצה. מעבר לתיקית האב בעזרת הסימון .. מבוא לתכנות מערכות
33
פקודות לניהול קבצים הפקודה cp משמשת להעתקת קבצים או תיקיות
ניתן להשתמש בפקודה בשתי דרכים: > cp [options] <file1> <file2> יוצרת העתק חדש של file1 בשם file2 > cp [options] <file1> ... <file𝑛> <directory> יוצרת העתקים חדשים של כל הקבצים בתיקיה קיימת אם קיים כבר קובץ בעל השם המבוקש הוא נמחק ומוחלף (overwritten) דגלים שימושיים: -r: מבצע העתקה רקורסיבית של תיקיות ותוכנן ללא דגל זה תיקיות אינן מועתקות -i: מבקש אישור לפני מחיקת קובץ קיים מבוא לתכנות מערכות
34
פקודות לניהול קבצים הפקודה mv משמשת להעברת קבצים או תיקיות או שינוי שמם ניתן להשתמש בפקודה בשתי דרכים: > mv [options] <file1> <file2> משנה את שמו של file1 ל-file2 עובדת גם עבור תיקיות > mv [options] <file1> ... <file𝑛> <directory> אם הפרמטר האחרון הוא שם של תיקיה קיימת הפקודה מעבירה את הקבצים לתוכה אם קיים כבר קובץ בעל השם המבוקש הוא נמחק ומוחלף (overwritten) דגלים שימושיים: -i: מבקש אישור לפני מחיקת קובץ קיים מבוא לתכנות מערכות
35
פקודות לניהול קבצים הפקודה rm מאפשרת מחיקת קבצים או תיקיות:
> rm [ options ] <files> דגלים שימושיים: -r: מבצע מחיקה רקורסיבית של תיקיות ללא דגל זה ספריות אינן נמחקות -i: מבקש אישור לפני מחיקת קובץ -f: לא מבקש אישור בשום מקרה שימו לב: לא ניתן לשחזר קבצים שנמחקו הפקודה הבאה מוחקת את כל הקבצים והספריות במיקום הנוכחי ועלולה להיות הרסנית למדי: > rm -rf * מבוא לתכנות מערכות
36
פקודות לניהול קבצים - דוגמאות
>ls hello.c private/ story.txt >cp hello.c prog.c hello.c private/ prog.c story.txt >mv prog.c private/program.c >ls private example.txt program.c >mv hello.c story.txt private private/ מבוא לתכנות מערכות
37
פקודות לניהול קבצים - דוגמאות
>ls private example.txt hello.c program.c story.txt >rm -i private/story.txt rm: remove regular file `private/story.txt'? y >rm private rm: cannot remove directory `private': Is a directory >rm -ri private rm: descend into directory `private'? n >rm -rf private >ls > מבוא לתכנות מערכות
38
הדפסת תוכן של קבצים הפקודה cat מדפיסה למסך את תוכן הקובץ
> cat <file> אם הקובץ גדול המסך יגלול ולא נוכל לראות בנוחות את התחלתו אם לא מופיע שם קובץ הפקודה מדפיסה את הקלט הסטנדרטי (בד"כ קלט מהמקלדת) בהמשך נראה למה זה מועיל הפקודה more מדפיסה למסך את התוכן, אך עוצרת כאשר נגמר המקום > more <file> לחיצה על enter תגרום להדפסת שורה נוספת לחיצה על q תפסיק את ההדפסה הפקודה less היא שיפור של more ומאפשרת גלילה בשני הכיוונים ועוד אפשרויות > less <file> מבוא לתכנות מערכות
39
הרשאות קבצים לכל קובץ יש הרשאות הקובעות למי מותרת הגיש לקובץ ולצורך אילו פעולות. ישנם 3 סוגי משתמשים: User - בעל הקובץ. בעל הקובץ הוא המשתמש שיצר את הקובץ במערכת. Group - משתמש אשר שייך לקבוצה של בעל קובץ הגדרת קבוצות משתמשים הינה מחוץ לחומר הקורס Other - שאר המשתמשים במערכת לכל סוג משתמש יש 3 הרשאות שונות: Read - מאפשרת קריאת תוכן הקובץ (כולל העתקתו) Write - מאפשרת שינוי הקובץ הקיים Execute - מאפשרת להריץ את הקובץ מבוא לתכנות מערכות
40
התו d מציין אם מדובר בתיקיה
הרשאות קבצים כדי לראות מהן ההרשאות ניתן להשתמש בפקודה 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 mtm users 4096 Aug 31 17:23 private/ drwxrwxrwx 2 mtm users 4096 Aug 31 17:23 public/ שורת ההרשאות עבור כל קובץ היא רצף האותיות הבא: drwxrwxrwx אם מופיעה אות ההרשאה קיימת אם מופיע מקף ההרשאה אינה קיימת מצייני ההרשאות user group other התו d מציין אם מדובר בתיקיה מבוא לתכנות מערכות
41
שינוי הרשאות קבצים בעל הקובץ רשאי לשנות את ההרשאות של הקובץ
שינוי ההרשאות ניתן בעזרת הפקודה chmod: > chmod <mode> <files> <mode> - שרשור תווים המורכב מ-who, opcode ו-permission אם לא מצוין who, ברירת המחדל היא a. Who Opcode Permission u - User + - Add permission r - Read g - Group - - Remove permission w - Write o - Other = - Assign permission x - Execute a - All דוגמאות: > chmod u+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-- מבוא לתכנות מערכות
42
הרשאות עבור תיקיות Execute Write Read
עבור תיקיות להרשאות המשמעות שונה: Read – הרשאה לראות את רשימת הקבצים Write – הרשאה של יצירת/מחיקת תיקייה או שינוי קבצים בתיקייה Execute – הרשאת כניסה לתיקייה לדוגמה, מה ההרשאות הנדרשות לביצוע כל אחת מהפעולות הבאות? > cd my_dir > mkdir directory > rmdir directory > ls Execute Write Read מבוא לתכנות מערכות
43
הפקודה man המידע שהוצג כאן לגבי כל אחד מהפקודות חלקי
> man <command name> ה-man של פקודה מכיל את צורת ההפעלה שלה, דגלים אפשריים ועוד. למשל: > man ls > man rm > man man אם לא בא לכם להשתמש ב-man ככה ניתן למצוא דרך גוגל את אותו המידע בדיוק, פשוא חפשו את שם הפקודה בצירוף man pages ותגיעו לקישורים באינטרנט המכילים את קבצי man של הפקודה. מבוא לתכנות מערכות
44
ערוצי קלט/פלט לכל תכנית יש ערוצי קלט וערוצי פלט – אלו הם הדרכים בהם היא מקבלת קלט ומציגה את הפלט שלה לכל תכנית קיימים ב-UNIX 3 ערוצי ברירת מחדל: ערוץ הפלט הסטנדרטי: אליו מודפס הפלט ברירת מחדל היא הדפסה לחלון הטרמינל ערוץ הקלט הסטנדרטי: ממנו מקבלת התכנית את הקלט ברירת המחדל היא הפקודות המוכנסות בחלון הטרמינל ערוץ השגיאות הסטנדרטי: ערוץ פלט נוסף המשמש להדפסת הודעות שגיאה ברירת המחדל היא הדפסה לחלון הטרמינל ערוצי קלט/פלט נוספים יכולים להיות למשל קבצים, נתייחס למקרים אלו בהמשך הקורס מבוא לתכנות מערכות
45
הפניית קלט/פלט בעת קריאה לפקודה בטרמינל ניתן להפנות את ערוצי הקלט והפלט הסטנדרטיים לקבצים הפניית ערוץ הפלט הסטנדרטי נעשית באמצעות האופרטור "<": > command [arguments] > <output_file> הפניית ערוץ הקלט הסטנדרטי נעשית באמצעות האופרטור ">": > command [arguments] < <input_file> הפניית ערוץ הפלט וערוץ השגיאות הסטנדרטי נעשית באמצעות באופרטור "&<": > command [arguments] >& <output_and_errors_file> אם ננסה לכתוב לתוך קובץ קיים הפקודה לא תתבצע ניתן להוסיף "!" כדי למחוק את הקובץ הקיים ולהחליפו אם ברצוננו להוסיף את הפלט להמשכו של קובץ קיים ניתן להשתמש ב-">>" או ">>&" (בהתאמה) במקרה זה יש להוסיף "!" אם הקובץ לא קיים עדיין (הערה למתקדמים) פקודה לכתיבה מחדש של קובץ תבוצע אם משתנה noclobber מוגדר. ראה למשל מבוא לתכנות מערכות
46
הפניית קלט/פלט ניתן להפנות מספר ערוצים בבת אחת
הפניית הקלט והפלט יחדיו נעשית כך: > command [arguments] < input > output כדי להפנות את ערוץ השגיאות בנפרד מערוץ הפלט ניתן לרשום: > (command [arguments] > output) >& errors כדי להפנות כל אחד מהערוצים לקובץ שונה, תוך וידוא שהקבצים ירשמו מחדש אם הם קיימים יש לכתוב: > (command [arguments] < input >! output) >&! errors ועוד כמה הערות למתקדמים: ניתן להפנות את הפלט למסך ואת השגיאות לקובץ כך: (<command> > /dev/tty) >& <f2> ניתן להתעלם מאחד מהם ע"י שימוש ב-/dev/null, למשל: (<command> > /dev/null ) >& <f2> /dev/null הוא קובץ מיוחד במערכת הקבצים שמתנהג כמו "חור שחור" מבוא לתכנות מערכות
47
הפניית קלט/פלט - דוגמאות
בעזרת הפניית קלט/פלט ניתן לעשות שימושים שונים בפקודה cat למשל: >cat > file.txt Hello world! >ls file.txt >cat file.txt >cat file.txt > file2.txt >cat file2.txt >cat file.txt >> file2.txt הכנסת קלט מהמקלדת מבוא לתכנות מערכות
48
הפניית קלט/פלט - דוגמאות
>cat < file2.txt > file.txt file.txt: File exists. >cat < file2.txt >! file.txt >cat file.txt Hello world! >rmdir foo rmdir: `foo': No such file or directory >rmdir foo > output.txt >rmdir foo >& error.txt >cat error.txt הודעת השגיאה נשלחת לערוץ השגיאות ולכן אינה מופנית לקובץ מבוא לתכנות מערכות
49
הידור תכניות ב-stud הרצת ודיבוג תכניות
מבוא לתכנות מערכות
50
Hello world ב-stud נדגים כעת כיצד ניתן לכתוב תכנית על ה- studולהריצה
לשם כך עלינו לעבור את השלבים הבאים: התחברות ל-stud ראינו כבר כיצד ניתן לעשות זאת במספר דרכים כתיבת הקוד בעורך כלשהו הידור הקוד בעזרת מהדר (compiler) הרצת הקוד מבוא לתכנות מערכות
51
כתיבת הקוד כדי לכתוב קוד נצטרך להשתמש בתכנית כלשהי לעריכת טקסט
מספר עורכי טקסט המותקנים ב-stud: תכניות ללא מנשק גרפי: nano- פשוטה לשימוש, אבל לא נוחה לעריכת קוד בטווח הארוך vi או vim - מכילה את כל התכונות שמשתמש צריך, אבל דורשת זמן הסתגלות ארוך יותר emacs - כבדה וגם דורשת קצת זמן הסתגלות אבל בעלת אפשרויות רבות למשתמשים מתקדמים תכניות בעלות מנשק גרפי: gvim - גרסה גרפית של vim nedit - תכנית פשוטה לשימוש (דומה להתנהגות תוכנות דומות ב-Windows) אך בעלת אפשרויות מתקדמות יותר emacs - אם מנשק גרפי זמין התוכנה תופעל עם מנשק גרפי מומלץ להשקיע דקה-שתיים בכל אחת מהתכניות ולהחליט מה הכי נוח לכם - בסופו של דבר,לכל משתמש העדפותיו האישיות מבוא לתכנות מערכות
52
קמפול הקוד כדי לקמפל את הקוד שכתבנו לשפת מכונה יש להשתמש בקומפיילר.
בסביבת UNIX מותקן כקומפיילר ברירת מחדל הקומפיילר gcc GNU Compiler Collection אופן השימוש: > gcc <flags> <files> -o <output file> למשל על מנת לקמפל את הקוד בקובץ hello.c: > gcc hello.c -o hello אם אין שגיאות יווצר קובץ הרצה בשם המתאים אם קיימות שגיאות הן יודפסו למסך לערוץ השגיאות מבוא לתכנות מערכות
53
שימוש ב-gcc אם הדגל -o אינו מוגדר הקומפיילר יבחר בשם קובץ הפלט a.out כברירת מחדל הדגל -g משמש להוספת מידע הנחוץ ל-debugger כשאתם מתכננים לדבג הקפידו להשתמש בדגל זה בעזרת דגל זה ה-debugger יכול להדפיס מידע מדויק על השורות בהן קורות השגיאות ניתן לקמפל מספר קבצים בבת אחת: > gcc file1.c file2.c files3.c –o my_prog > gcc *.c –o my_prog בעבודה עם קומפיילר gcc תחת windows כמו שמסופק עםEclipse באתר הקורס שם ברירת המחדל הוא a.exe הדגל -g חשוב מאוד גם כאשר עובדים עם valgrind כדי לאפשר לה להדפיס את מספר השורות הרלוונטיים בכל קובץ מדוע קיים בכלל דגל -g? מקוד המקור לאחר ההידור לא נשאר כמעט זכר. שמות המשתנים נמחקים לגמרי וכך גם שמות הקבצים ומספרי השורות. תוכלו להיווכח בכך בקורס את"מ כאשר תראו כיצד נראה קוד לאחר הידור. מידע על שגיאות וטעויות רלוונטי רק אם ניתן לקשר אותו לשורה ספציפית בקוד המקור כדי שנוכל לתקנו. שימוש בדגל -g גורם למהדר לשמור בקובץ ההרצה את קוד המקור וקישורים בין פקודות המכונה לבין השורה בקוד שגרמה ליצירתן. כך ניתן להשתמש בדיבאגר בצורה שתוכל להתייחס לשורות בקוד המקור ולשמות המשתנים והטיפוסים אשר מופיעים בו. מבוא לתכנות מערכות
54
שימוש ב-gcc במהלך הקורס נדרוש לקמפל את הקוד עם הדגלים הבאים:
> gcc -std=c99 -Wall -Werror -pedantic-errors ... משמעות הדגלים: -std=c99: קובע את הסטנדרט C99 המוסיף כמה תכונות חשובות לשפה -Wall: מציג את כל האזהרות האפשריות. אזהרות הן בעיות בקוד שאמנם ניתן להדר אך בדרך כלל מעידות על באגים -Werror: מתייחס לאזהרה כאל שגיאה אין הצדקה לקוד המתקמפל עם אזהרות ולכן הדרישה בקורס היא לקוד המתקמפל ללא אזהרות -pedantic-errors: מגביל את הקוד לסטנדרט הנבחר כך שדברים אשר המהדר יודע להתמודד איתם אך אינם חלק מהסטנדרט ייחשבו כשגיאות מומלץ להשתמש בדגלים אלו תמיד מאחר והם מקלים על העבודה ומשפרים את איכות הקוד (חובה במהלך הקורס) מבוא לתכנות מערכות
55
הרצת הקוד לאחר הקומפילציה מתקבל קובץ הרצה
כאמור, אין לקובץ סיומת מיוחדת gcc דואג בצורה אוטומטית להוסיף הרשאות ריצה לקובץ בשביל להריץ את הקובץ עלינו לרשום את שמו כשם הפקודה להרצה להרצת פקודה בספריה הנוכחית יש להוסיף “./” לפי שם הקובץ בהמשך נראה כיצד ניתן לאפשר לקובץ לרוץ ללא הוספת “./” > ./hello Hello World! מבוא לתכנות מערכות
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.