56
םםםםםם םםםםם םםם"ם- תתתת תתתתתת תתתתתת234122 תתתת ת"ת תתתת תתתתתתתתתתת תתתת- תתתתת תת תתתתתת תת תתתתת תתתתתתתת תתת

ברוכים הבאים למת"ם

Embed Size (px)

DESCRIPTION

ברוכים הבאים למת"ם. מבוא לתכנות מערכות - 234122. הוכן ע"י עומר סטרולוביץ מבוסס על עבודתם של ואדים אייזנברג ולי-טל משיח. תרגול מס' 1. מנהלה התחברות ל- stud עבודה בסביבת UNIX. מטרות הקורס. לימוד שיטות וכלים עבור פיתוח תוכנה גדולה התנסות בכתיבת תוכנה ובדיקתה - PowerPoint PPT Presentation

Citation preview

ברוכים הבאים למת"ם234122מבוא לתכנות מערכות -

הוכן ע"י עומר סטרולוביץ

מבוסס על עבודתם של ואדים אייזנברג ולי-טל משיח

1תרגול מס' מנהלה-התחברות לstud עבודה בסביבתUNIX

3מבוא לתכנות מערכות - 234122

מטרות הקורס

פיתוח תוכנה גדולהעבור שיטות וכלים לימוד

התנסות בכתיבת תוכנה ובדיקתה

המשך לימוד עקרונות התכנות ממבוא למדעי המחשב++C/Cלימוד תכונות מתקדמות של שפות התכנות –

4מבוא לתכנות מערכות - 234122

מנהלה

:אתר הבית–http://webcourse.cs.technion.ac.il/234122

האתר מכיל מידע רב וחשוב המתעדכן במהלך הסמסטר.–

קבלתe-mail:מהאתר ודאו שאתם מקבלים עדכונים מהאתר ע"י כניסה ל-–

http://grades.cs.technion.ac.il מעבר ללשונית Settings/Auto update .e-mail מסומן Announcements Updateובדיקה שתחת

5מבוא לתכנות מערכות - 234122

מבנה הציון הסופי

70%מבחן סופי

30% תקף- תרגילי הבית תרגילי בית על נושאי הקורס השונים )+ תרגיל הכנה ללא ציון(4–

התרגילים מורכבים משאלות יבשות )כתיבת פתרון( ורטובות )כתיבת קוד, –הרצתו ובדיקתו(

חובה לעבור את המבחן הסופי במבחן55ציון ש"ב לא ייחשב במקרה של ציון קטן מ-–

6מבוא לתכנות מערכות - 234122

תרגילי בית

מומלץ לעשותם בזוגות- הרבה עבודה תרגילי הבית בקורס דורשים באתר הקורס.Find a partnerניתן למצוא שותף תחת לשונית –

בכל סמסטר נעזבים מספר אנשים ע"י השותף שלהם.–

שימרו על קשר טוב עם השותף – זהו חלק מתהליך פיתוח התוכנה.•

סגל הקורס לא יטפל בבעיות בין שותפים ולא ינתנו הקלות בהקשר זה–

היא חלק חשוב מתהליך פיתוח עמידה במסגרת זמנים – אין הארכותהתוכנה

הארכות על בסיס אישי ינתנו רק עבור מקרים קיצוניים או שירות מילואים –פעיל

7מבוא לתכנות מערכות - 234122

תרגילי הבית

ואכן עובדשנבדקשימו לב: תרגיל מוכן הוא תרגיל הקפידו לבדוק את נכונות הקוד שלכם לפני ההגשה – נקודות אינן ניתנות לפי –

זמן העבודה על התרגיל אלא לפי כמות הבדיקות שבהן הוא עומד

:לא ינתנו הקלות הקפידו לגבות באופן שוטף את הקבצים גיבוילסטודנטים שאיבדו את עבודתם בגלל הזנחה

8מבוא לתכנות מערכות - 234122

תרגילי הבית

:הגשהעקבו במדויק אחרי הוראות ההגשה לכל תרגיל המצוינות בתרגיל. הן –

מפרטות מה יש להגיש מודפס וכיצד יש להגיש את הקבצים דרך האתר.

אי ציות להוראות אלו יגרור הורדת ציון•

עבור ההגשה האלקטרוניתמספר האישור שמרו את –

ולא לגעת t2/studמומלץ לשמור עותק של הקבצים על ספרית הבית ב-–בו למקרה של טעויות עם ההגשה האלקטרונית

9מבוא לתכנות מערכות - 234122

ביקורות קוד

ביקורות קוד ייערכו 4 ו-2לאחר תרגילים(Code Reviewsלהגשות )לכל זוג תתבצע פגישה עם אחד המתרגלים בה נעבור על הקוד בצורה –

אישית

זו הזדמנות נדירה לקבל פידבק אישי על הקוד מומלץ לבוא לביקורת ,שכתבתם ועל בעיות בסגנונו שלא ניתן להעיר עליהן בדרכים אחרות

10מבוא לתכנות מערכות - 234122

תרגילי בית - העתקות

בקורס יופעלו שיטות מתקדמות למציאה אוטומטית של העתקות

תרגילי הבית ייבדקו גם בבדיקה ידנית על למציאת העתקות

יהיה נתן את תרגיל הבית שלו להעתיק או כמי שמעתיקמי שייתפס כלעונשים חמוריםצפוי כולל שאלות יבשות–

11מבוא לתכנות מערכות - 234122

נושאי התרגולים

עבודה בסיסית בסביבת 1תרגול :UNIX

תכונות מתקדמות של 2-5תרגולים :C-ו Abstract Data Types

עבודה ב-6-7תרגולים :UNIXוכתיבת תסריטים

8-12תרגולים :C++

חזרה ושאלות ממבחנים13-14תרגולים :

12מבוא לתכנות מערכות - 234122

studהתחברות ל-

עבודה על השרתאפשרויות התחברותעבודה במחשב אישי

13מבוא לתכנות מערכות - 234122

studהתחברות ל--תרגילי הבית יבדקו ע"י הידור והרצת הקוד המוגש על שרת הstud

stud.technion.ac.il למרות שכתובתו היא t2ידוע גם כ-–

לשם כך עליכם לדעת כיצד ניתן להתחבר אל השרת ולעבוד עליואינה בהכרח נכונהתכנית שעובדת על המחשב הביתי שלכם –

לוודא את נכונותה בעזרת הרצתה על השרתעליכם –

-בstud קיימת מערכת הפעלה מסוג UNIX ולכן עליכם לוודא שהתכנית שלכם מתנהגת בצורה נכונה בסביבה זו

14מבוא לתכנות מערכות - 234122

דרכי עבודה

לעבוד בקורסהמומלצותהדרכים הבאות הן הדרכים ניתן לעבוד גם בכל צורה אחרת, כל עוד התוצאה הסופית עובדת כנדרש–

עם זאת, סגל הקורס לא יעזור בבעיות הצצות מעבודה בכלים אחרים–

-כדי לכתוב את התוכנה כך שתעבוד נכון על הstud קיימות שתי אפשרויות:

לאורך כל הדרךstud- כתיבת הקוד ובדיקתו על ה-עבודה על השרת –

וביצוע בדיקות על השרת מדי פעםעבודה על מחשב אישי –

15מבוא לתכנות מערכות - 234122

עבודה על השרת

בשיטה זו נשתמש בתוכנה כלשהי כדי להתחבר אל השרת דרך הרשת לאחר ביצוע ההתחברות נקבל חלון טרמינל אשר מקושר לחשבוננו

במחשב המרוחקכל הפקודות שיוכנסו לטרמינל –

מתבצעות על המחשב המרוחק.

עיקר העבודה יהיה בעזרת מנשק טקסטואלי

ניתן גם להריץ תכניות עםמנשק גרפי

16מבוא לתכנות מערכות - 234122

אפשרויות התחברות

-ניתן להתחבר לstud:בשיטות הבאות :SSHהתחברות בעזרת –

יש להוריד את התוכנה מהכתובת windowsעבור מחשבים בסביבת •הבאה:

ftp://ftp.cs.technion.ac.il/pub/ssh-client/sshclient.exeעבור מחשבים בסביבת לינוקס )או מק) ניתן פשוט להשתמש בפקודה •

ssh.מחלון טרמינל

(:Windows )עבור Go-Globalהתחברות בעזרת –

http://www.technion.ac.il/GG/IPviewer.htmlגלישה לכתובת •

Internet Explorerעובד רק עם •

17מבוא לתכנות מערכות - 234122

עבודה במחשב אישי

-עבודה על השרת אינה נוחה בגלל העומס הרב על הstud.

-ניתן לעבוד על מחשב בבית או בחווה ולהעביר את הקוד אל הstudלבדוק את נכונות הקוד מומלץשימו לב שייתכנו הבדלים בין המחשבים ולכן –

אחת לכמה זמן )ולא רק בסוף העבודה(studעל ה-

18מבוא לתכנות מערכות - 234122

עבודה במחשב אישי

-עבודה בEclipse CDT.סביבת העבודה המומלצת ע"י צוות הקורס–

studמשתמשת בקומפיילר דומה לזה שב-– או לינוקסwindowsניתנת להרצה על –

מותקנת במחשבי החווה–

-עבודה בVisualStudioMSDNAAניתן להורדה בחינם מ-–

19מבוא לתכנות מערכות - 234122

עבודה במחשב אישי

:)עבודה במחשבי הלינוקס בחווה )או התקנת לינוקסהשימוש בלינוקס יכול להקל מאוד על מלאכת הדיבוג מאחר וכמות –

קטנה יותרstud ההבדלים בין מחשב המריץ לינוקס ל-

התקנתCygwin:Windows עבור מחשבי UNIXסביבה המדמה את –3מומלצת עבור תרגיל בית –

20מבוא לתכנות מערכות - 234122

מידע נוסף

כדי להקל על השימוש במגוון הכלים הגדול אתר הקורס מכיל מספרהמסבירים את הפרטים הטכניים עבור שימוש בכלים הללו: מדריכים

: מפרט את הדרכים השונות לעבודה )כולל התקנת studמדריך התחברות ל-–Cygwin)

: מסביר את תהליך ההתקנה ויצירת פרויקט ראשוןEclipse CDTמדריך עבור –

המדריכים נמצאים באתר תחתCourse Material, Guides. ,אשר תרגולי עזר 3ייערכו בנוסף

יתמקדו בהפעלה טכנית של כליםהדרושים בקורס

זמן התרגולים יוכרז בהמשך–

שקפי התרגולים זמינים באתר תחת–Course Material, Auxiliary Tutorials

21מבוא לתכנות מערכות - 234122

UNIXעבודה בסביבת

?מהי מערכת הפעלה-מערכת הקבצים בUNIX עבודה בחלוןShell

22מבוא לתכנות מערכות - 234122

מהי מערכת הפעלה?

שכבת ביניים בין החומרה לבין התוכנהמערכת הפעלה מהווהלמחשב עבור משתמשים ומתכנתים גישה נוחה מאפשרת

עבור המשתמש: מספקת מנשק נוח–למחשב ושירותים בסיסיים

עבור המתכנת: מספקת מנשקים לניהול זיכרון,–קבצים והתקני חומרה נוספים

:דוגמאות למערכות הפעלה–Windows–Ubuntu–OSX–Android–iOS

23מבוא לתכנות מערכות - 234122

?UNIXמהי

UNIXהינה משפחה של מערכות הפעלה

יתרון מערכות ההפעלה ממשפחה זו הוא בקיומו של סטנדרט נוח עבור(POSIXהשירותים אותן היא מספקת )הקרוי

רוב מערכות ההפעלה המוכרות לכם עומדות בסטנדרט שלUNIXLinuxהמפורסמת ביותר כיום היא –Windowsיוצאת הדופן היא כמובן –

-בפרט - מערכת ההפעלה על שרת הstud עליו נבדקים תרגילי הבית היא Linux.

24מבוא לתכנות מערכות - 234122

UNIXמערכת הקבצים ב- ארגון הקבצים במחשבמערכת ההפעלה אחראית בין השאר על-מערכת הקבצים בUNIX-מורכבת מקבצים ותיקיות – בדומה ל Windows

הוא אוסף סדור של תווים קובץ–

( מאפשרת שמירת מספר קבצים ותיקיות נוספות בצורה Directory) תיקיה–מסודרת

לכל קובץ או תיקיה יש שםאין מגבלות על מבנה השם )לא חייבת להיות סיומת(–

<name>.<extensionמקובל ששם קובץ הוא מהצורה >–

C עבור קובץ מקור בשפת test.cלמשל •(Windows ב-exe סיומת מיוחדת לקובץ הרצה )כמו UNIXאין ב-–

כל קובץ או תיקיה נמצאים בתוך תיקיה כלשהימלבד התיקיה הראשית–

25מבוא לתכנות מערכות - 234122

התייחסות לקבציםכדי להתייחס לקובץ יש להשתמש בשמו

נקראת "/"התיקיה הראשית

שמו המוחלטניתן להתייחס לקובץ ע"י:–/usr/mtm/exercise1/main.c

התו "/" משמש כסימן מפריד להגדרת מסלול במערכת הקבצים–

תיקיה הנוכחיתבכל חיבור ובכל זמן קיימת תיקיה המוגדרת כ

מהתיקיה הנוכחית:שם יחסי ניתן להתייחס לקובץ על ידי–main.c אם התיקיה הנוכחית היא/usr/mtm/exercise1

–exercise1/main.c אם התיקיה הנוכחית היא /usr/mtm

26מבוא לתכנות מערכות - 234122

ריבוי משתמשים

UNIX מרובת משתמשים היא מערכת הפעלה

תיקית ביתלכל משתמש במערכת קיימת

בהתחברות למערכת התיקיה הנוכחית היא תיקית הבית של המשתמש

27מבוא לתכנות מערכות - 234122

קיצורים

:בנוסף מוגדרים הקיצורים הבאים עבור שמות קבציםהתיקיה הנוכחית- נקודה אחת מייצגת את .–

תיקיית האב- שתי נקודות מייצגות את ..–

התיקיה בה נמצאת התיקיה הנוכחית•

של המשתמשתיקיית הבית - מייצגת קיצור ל~ –

–~user מייצגת קיצור לתיקיית הבית של המשתמש -userstud היא תיקית הבית של הקורס בשרת ה-mtmלמשל ~•

ניתן להשתמש בקיצור * כדי להתייחס למספר קבצים בבת אחת ע"ישימוש בתבניות, למשל:

מתייחס לכל הקבצים *–

–.*txt ."-יותאם לכל הקבצים ששמם מסתיים בtxt"

28מבוא לתכנות מערכות - 234122

דוגמה-נתון מבנה של מערכת קבצים לדוגמה בUNIX:?למה מתייחסות המחרוזות הבאות

/usr/uri/progs/Hello.c

/usr/uri/progs/Matam

progs

/~progs

/.hw1

/..hw2

~ari/progs

~mtm/public/1011a/ex1

/~progs*/

/ (root)

Matam

usrtmp

ari uri

progs progs

Hello.c

bin

hw1 hw2

29מבוא לתכנות מערכות - 234122

Shellעבודה בחלון ה-לאחר ההתחברות מתקבל חלון טרמינל בחלון זה יכול המשתמש להכניס את הפקודה הבאה למחשב ולקבל את הפלט

עבור פקודה זו הכנסת פקודה מתבצעת ע"י רישום שמה והפרמטרים שלה ולחיצה עלEnter:לכל הפקודות יש את המבנה הבא

> command [arg1] [arg2] [arg3] ...

(0מספר הארגומנטים לפקודה משתנה בהתאם לפקודה ויכול להיות כל מספר )כולל –

בשביל להתנתק בכל שלב ניתן לסגור את חלון הטרמינל או לרשום את הפקודהexit.

prompt )לא מקלידים

אותו(

שם הפקודה לביצוע

ארגומנטים לפקודה

30מבוא לתכנות מערכות - 234122

UNIXפקודות בסיסיות ב- כדי להדפיס תוכן של תיקיה נשתמש בפקודהls:

> ls [flags] [files] עבור הדפסת תוכן התיקיה הנוכחיתlsניתן לרשום פשוט –

ניתן להוסיף את שם התיקיות שאת תוכנן נרצה להדפיס–

דגליםלרוב הפקודות שנלמד אפשר להוסיף פרמטרים נוספים הנקראים: יגרום להדפסת הפלט כך שכל קובץ מופיע ls עבור הפקודה lלמשל הדגל -–

בשורת פלט נפרדת עם מידע נוסף

יגרום לפקודה להדפיס גם פריטים נסתריםaהדגל -–

הוא כל קובץ או תיקיה ששמם מתחיל ב-. )נקודה(UNIXפריט נסתר ב-•

לשלב מספר דגלים בבת-אחתבהרבה מהפקודות ניתן –

כאשר הדגלים מיוצגים ע"י אות יחידה•

ls -alזהה לפקודה ls -a -lלמשל הפקודה •

31מבוא לתכנות מערכות - 234122

lsדוגמאות - >lshello.c private/ story.txt>ls privateexample.txt>ls -ltotal 12-rw-r--r-- 1 mtm users 3047 Jun 20 10:35 hello.cdrwx------ 2 mtm users 4096 Sep 1 14:28 private/-rw------- 1 mtm users 1081 Sep 1 14:28 story.txt>ls -altotal 28drwx------ 3 mtm users 4096 Sep 1 14:29 ./drwx--x--x 50 mtm users 12288 Sep 1 10:52 ../-rw-r--r-- 1 mtm users 3047 Jun 20 10:35 hello.cdrwx------ 2 mtm users 4096 Sep 1 14:28 private/-rw------- 1 mtm users 1081 Sep 1 14:28 story.txt

32מבוא לתכנות מערכות - 234122

ניהול תיקיות

הדפסת שם התיקיה הנוכחית ע"י הפקודהpwd:

> pwd ניתן להחליף את התיקיה הנוכחית ע"י הפקודהcd:

> cd <directory> ניתן ליצור תיקיה חדשה ע"י הפקודהmkdir:

> mkdir <name> ע"י הפקודה ריקהניתן למחוק תיקיה rmdir:

> rmdir <directory>

33מבוא לתכנות מערכות - 234122

ניהול תיקיות - דוגמאות>cd ~>pwd/usr/030/moshe>cd matammatam: No such file or directory.>mkdir matam>cd matam>pwd/usr/030/moshe/matam>cd ..>rmdir matam

מעבר לתיקית הבית בעזרת הקיצור ~

בכל הפקודות, אם אחד הפרמטרים אינו תקין תודפס הודעת שגיאה

מתאימה והפקודה תופסק

מעבר לתיקית האב בעזרת הסימון ..

34מבוא לתכנות מערכות - 234122

פקודות לניהול קבצים הפקודהcp משמשת להעתקת קבצים או תיקיות:ניתן להשתמש בפקודה בשתי דרכים

> cp [options] <file1> <file2>file2 בשם file1יוצרת העתק חדש של –

> cp [options] <file1> ... <file> <directory>יוצרת העתקים חדשים של כל הקבצים בתיקיה קיימת–

( אם קיים כבר קובץ בעל השם המבוקש הוא נמחק ומוחלףoverwritten)

:דגלים שימושיים–-rמבצע העתקה רקורסיבית של תיקיות ותוכנן :

ללא דגל זה תיקיות אינן מועתקות•

–-iמבקש אישור לפני מחיקת קובץ קיים :

35מבוא לתכנות מערכות - 234122

פקודות לניהול קבצים הפקודהmv קבצים או תיקיות או שינוי שמם להעברתמשמשת:ניתן להשתמש בפקודה בשתי דרכים

> mv [options] <file1> <file2>file2 ל-file1משנה את שמו של –

עובדת גם עבור תיקיות–

> mv [options] <file1> ... <file> <directory>אם הפרמטר האחרון הוא שם של תיקיה קיימת הפקודה מעבירה את הקבצים –

לתוכה

( אם קיים כבר קובץ בעל השם המבוקש הוא נמחק ומוחלףoverwritten)

:דגלים שימושיים–-iמבקש אישור לפני מחיקת קובץ קיים :

36מבוא לתכנות מערכות - 234122

פקודות לניהול קבצים

הפקודהrm :מאפשרת מחיקת קבצים או תיקיות

> rm [ options ] <files>:דגלים שימושיים

–-rמבצע מחיקה רקורסיבית של תיקיות :

ללא דגל זה ספריות אינן נמחקות•

–-iמבקש אישור לפני מחיקת קובץ :

–-fלא מבקש אישור בשום מקרה :

שימו לב: לא ניתן לשחזר קבצים שנמחקו

הפקודה הבאה מוחקת את כל הקבצים והספריות במיקום הנוכחי ועלולהלהיות הרסנית למדי:

> rm -rf *

37מבוא לתכנות מערכות - 234122

פקודות לניהול קבצים - דוגמאות

>lshello.c private/ story.txt>cp hello.c prog.c>lshello.c private/ prog.c story.txt>mv prog.c private/program.c>lshello.c private/ story.txt>ls privateexample.txt program.c>mv hello.c story.txt private>lsprivate/

38מבוא לתכנות מערכות - 234122

פקודות לניהול קבצים - דוגמאות

>ls privateexample.txt hello.c program.c story.txt>rm -i private/story.txt rm: remove regular file `private/story.txt'? y>rm privaterm: cannot remove directory `private': Is a directory>rm -ri privaterm: descend into directory `private'? n>rm -rf private>ls>

39מבוא לתכנות מערכות - 234122

הדפסת תוכן של קבצים הפקודהcat מדפיסה למסך את תוכן הקובץ

> cat <file>אם הקובץ גדול המסך יגלול ולא נוכל לראות בנוחות את התחלתו–

אם לא מופיע שם קובץ הפקודה מדפיסה את הקלט הסטנדרטי )בד"כ קלט –מהמקלדת(

בהמשך נראה למה זה מועיל•

הפקודהmore מדפיסה למסך את התוכן, אך עוצרת כאשר נגמר המקום

> more <file> תגרום להדפסת שורה נוספתenterלחיצה על –

תפסיק את ההדפסהqלחיצה על –

הפקודהless היא שיפור שלmoreומאפשרת גלילה בשני הכיוונים ועוד אפשרויות

> less <file>

40מבוא לתכנות מערכות - 234122

הרשאות קבצים

לכל קובץ יש הרשאות הקובעות למי מותרת הגיש לקובץ ולצורך אילופעולות.

סוגי משתמשים3ישנם :.1User .בעל הקובץ -

בעל הקובץ הוא המשתמש שיצר את הקובץ במערכת.•

.2Group משתמש אשר שייך לקבוצה של בעל קובץ -

הגדרת קבוצות משתמשים הינה מחוץ לחומר הקורס•

.3Other שאר המשתמשים במערכת -

הרשאות שונות3לכל סוג משתמש יש :.1Read )מאפשרת קריאת תוכן הקובץ )כולל העתקתו -

.2Write מאפשרת שינוי הקובץ הקיים -

.3Execute מאפשרת להריץ את הקובץ -

41מבוא לתכנות מערכות - 234122

user group other

הרשאות קבצים

כדי לראות מהן ההרשאות ניתן להשתמש בפקודה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/

:שורת ההרשאות עבור כל קובץ היא רצף האותיות הבא

d r w x r w x r w x

אם מופיעה אות ההרשאה קיימת–

אם מופיע מקף ההרשאה אינה קיימת–

מצייני ההרשאות

מציין אם dהתו מדובר בתיקיה

42מבוא לתכנות מערכות - 234122

שינוי הרשאות קבציםבעל הקובץ רשאי לשנות את ההרשאות של הקובץ שינוי ההרשאות ניתן בעזרת הפקודהchmod:

> chmod <mode> <files>–<mode-שרשור תווים המורכב מ - >who, opcode-ו permission.a, ברירת המחדל היא whoאם לא מצוין –

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-xr--r--r--rwxr-xr--

43מבוא לתכנות מערכות - 234122

הרשאות עבור תיקיות

:עבור תיקיות להרשאות המשמעות שונה–Read רשימת הקבצים– הרשאה לראות את

–Write בתיקייה קבצים שינויתיקייה או מחיקת/יצירת– הרשאה של

–Execute לתיקייה כניסה– הרשאת

?לדוגמה, מה ההרשאות הנדרשות לביצוע כל אחת מהפעולות הבאות> cd my_dir> mkdir directory> rmdir directory> ls

ExecuteWriteWriteRead

44מבוא לתכנות מערכות - 234122

manהפקודה המידע שהוצג כאן לגבי כל אחד מהפקודות חלקי ניתן בכל שלב להשתמש בפקודהman כדי לראות קובץ עזרה עבור

פקודה מסוימת.

> man <command name> של פקודה מכיל את צורת ההפעלה שלה, דגלים אפשריים ועוד.manה-–

:למשל

> man ls

> man rm

> man man

45מבוא לתכנות מערכות - 234122

ערוצי קלט/פלט

לכל תכנית יש ערוצי קלט וערוצי פלט – אלו הם הדרכים בהם היא מקבלתקלט ומציגה את הפלט שלה

-לכל תכנית קיימים בUNIX 3:ערוצי ברירת מחדל : ממנו מקבלת התכנית את הקלטערוץ הקלט הסטנדרטי–

ברירת המחדל היא הפקודות המוכנסות בחלון הטרמינל•

: אליו מודפס הפלטערוץ הפלט הסטנדרטי–

ברירת מחדל היא הדפסה לחלון הטרמינל•

: ערוץ פלט נוסף המשמש להדפסת הודעות שגיאהערוץ השגיאות הסטנדרטי–

ברירת המחדל היא הדפסה לחלון הטרמינל•

ערוצי קלט/פלט נוספים יכולים להיות למשל קבצים, נתייחס למקרים אלובהמשך הקורס

46מבוא לתכנות מערכות - 234122

הפניית קלט/פלטבעת קריאה לפקודה בטרמינל ניתן להפנות את ערוצי הקלט והפלט הסטנדרטיים לקבצים הפניית ערוץ הפלט הסטנדרטי נעשית באמצעות האופרטור"<":

> command [arguments] > <output_file>

הפניית ערוץ הקלט הסטנדרטי נעשית באמצעות האופרטור">":> command [arguments] < <input_file>

הפניית ערוץ הפלט וערוץ השגיאות הסטנדרטי נעשית באמצעות באופרטור"<&":> command [arguments] >& <output_and_errors_file>

אם ננסה לכתוב לתוך קובץ קיים הפקודה לא תתבצע כדי למחוק את הקובץ הקיים ולהחליפו"!"ניתן להוסיף –

-או "<<"אם ברצוננו להוסיף את הפלט להמשכו של קובץ קיים ניתן להשתמש ב )בהתאמה("<<&"

אם הקובץ לא קיים עדיין"!"במקרה זה יש להוסיף –

47מבוא לתכנות מערכות - 234122

הפניית קלט/פלט

ניתן להפנות מספר ערוצים בבת אחת:הפניית הקלט והפלט יחדיו נעשית כך

> command [arguments] < input > output

:כדי להפנות את ערוץ השגיאות בנפרד מערוץ הפלט ניתן לרשום

> (command [arguments] > output) >& errors

כדי להפנות כל אחד מהערוצים לקובץ שונה, תוך וידוא שהקבצים ירשמומחדש אם הם קיימים יש לכתוב:

> (command [arguments] < input >! output) >&! errors

48מבוא לתכנות מערכות - 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!

הכנסת קלט מהמקלדת

49מבוא לתכנות מערכות - 234122

הפניית קלט/פלט - דוגמאות

>cat < file2.txt > file.txt

file.txt: File exists.

>cat < file2.txt >! file.txt

>cat file.txt

Hello world!

Hello world!

>rmdir foo

rmdir: `foo': No such file or directory

>rmdir foo > output.txt

rmdir: `foo': No such file or directory

>rmdir foo >& error.txt

>cat error.txt

rmdir: `foo': No such file or directory

הודעת השגיאה נשלחת לערוץ השגיאות ולכן אינה מופנית לקובץ

50מבוא לתכנות מערכות - 234122

studתכנית ראשונה ב-

-הידור תכניות בstudהרצת ודיבוג תכניות

51מבוא לתכנות מערכות - 234122

Hello world-ב stud-נדגים כעת כיצד ניתן לכתוב תכנית על ה studולהריצה

:לשם כך עלינו לעבור את השלבים הבאיםstudל- התחברות1.

ראינו כבר כיצד ניתן לעשות זאת במספר דרכים•

הקוד בעורך כלשהו כתיבת2.

(compilerהקוד בעזרת מהדר )הידור 3.

הקוד הרצת4.

52מבוא לתכנות מערכות - 234122

כתיבת הקודכדי לכתוב קוד נצטרך להשתמש בתכנית כלשהי לעריכת טקסט-מספר עורכי טקסט המותקנים בstud:

:ללא מנשק גרפיתכניות –

•nanoפשוטה לשימוש, אבל לא נוחה לעריכת קוד בטווח הארוך -

•vim מכילה את כל התכונות שמשתמש צריך, אבל דורשת זמן הסתגלות ארוך יותר -

•emacs כבדה וגם דורשת קצת זמן הסתגלות אבל בעלת אפשרויות רבות למשתמשים -מתקדמים

:בעלות מנשק גרפיתכניות –

•gvim גרסה גרפית של -vim•nedit -דומה להתנהגות תוכנות דומות ב( תכנית פשוטה לשימוש -Windows אך בעלת )

אפשרויות מתקדמות יותר

•emacs אם מנשק גרפי זמין התוכנה תופעל עם מנשק גרפי -

מומלץ להשקיע דקה-שתיים בכל אחת מהתכניות ולהחליט מה הכי נוח לכם - בסופו שלדבר,לכל משתמש העדפותיו האישיות

53מבוא לתכנות מערכות - 234122

קמפול הקוד

.כדי לקמפל את הקוד שכתבנו לשפת מכונה יש להשתמש בקומפיילר בסביבתUNIX מותקן כקומפיילר ברירת מחדל הקומפיילר gcc

–GNU Compiler Collection

:אופן השימוש

> gcc <flags> <files> -o <output file>

למשל על מנת לקמפל את הקוד בקובץhello.c:

> gcc hello.c -o hello יווצר קובץ הרצה בשם המתאיםאין שגיאות אם ערוץ השגיאותהן יודפסו למסך לקיימות שגיאות אם

54מבוא לתכנות מערכות - 234122

gccשימוש ב- אם הדגל-o אינו מוגדר הקומפיילר יבחר בשם קובץ הפלט a.out

כברירת מחדל

הדגל-g-משמש להוספת מידע הנחוץ ל debuggerכשאתם מתכננים לדבג הקפידו להשתמש בדגל זה–

יכול להדפיס מידע מדויק על השורות בהן קורות debuggerבעזרת דגל זה ה-–השגיאות

:ניתן לקמפל מספר קבצים בבת אחת

> gcc file1.c file2.c files3.c –o my_prog

> gcc *.c –o my_prog

55מבוא לתכנות מערכות - 234122

gccשימוש ב-:במהלך הקורס נדרוש לקמפל את הקוד עם הדגלים הבאים

> gcc -std=c99 -Wall -Werror -pedantic-errors ...:משמעות הדגלים

–-std=c99 קובע את הסטנדרט :C99המוסיף כמה תכונות חשובות לשפה

–-Wall מציג את כל האזהרות האפשריות. אזהרות הן בעיות בקוד שאמנם ניתן :להדר אך בדרך כלל מעידות על באגים

–-Werrorמתייחס לאזהרה כאל שגיאה :

אין הצדקה לקוד המתקמפל עם אזהרות ולכן הדרישה בקורס היא לקוד •המתקמפל ללא אזהרות

–-pedantic-errors מגביל את הקוד לסטנדרט הנבחר כך שדברים אשר המהדר :יודע להתמודד איתם אך אינם חלק מהסטנדרט ייחשבו כשגיאות

מאחר והם מקלים על העבודה תמיד להשתמש בדגלים אלו מומלץ (חובה במהלך הקורסומשפרים את איכות הקוד )

56מבוא לתכנות מערכות - 234122

הרצת הקוד

לאחר הקומפילציה מתקבל קובץ הרצהכאמור, אין לקובץ סיומת מיוחדת–

–gccדואג בצורה אוטומטית להוסיף הרשאות ריצה לקובץ

בשביל להריץ את הקובץ עלינו לרשום את שמו כשם הפקודה להרצהלהרצת פקודה בספריה הנוכחית יש להוסיף “./” לפי שם הקובץ–

בהמשך נראה כיצד ניתן לאפשר לקובץ לרוץ ללא הוספת “./”–

> ./helloHello World!