היי אשמח לעזרה

techtest

New member
היי אשמח לעזרה

אשמח לקבל הסבר על stdin,stdout ו stderr

ובעיקרון על מה רוצים ממני בתרגיל הזה..

תודה
 

BravoMan

Active member
רוצים שתממש "מיני שורת פקודה":

למעשה רוצים ללמד אותך קצת על קלט, פלט והטיפול בהם, בכך שתכתוב מין מסוף קטן שהמשתמש יכול להריץ דרכו יישומים.

stdin הוא "הקלט הסטנדרטי" - בד"כ זו המקלדת אם כי אפשר "לכוון" לשם גם דברים אחרים.
זה מה ש-scanf, getchar ושאר החברים קוראים ממנו.

stdout - הוא הפלט הסטנדרטי, בד"כ המסך, אבל כמו הקלט יכול להיות גם מקומות אחרים, זה מה ש-printf וחברים כותבים עליו.
stderr הוא כמו stdout אבל לשם אמורים להדפיס טקסט של הודעות שגיאה.
בד"כ stdout ו-stderr מופנים שניהם למסך כך שלא רואים בעין הבדל בניהם, אבל בהחלט ניתן לבצע הפרדה כדי לסנן פלט ענייני של תוכנית ושגיאות.

במערכות linux ודומות כל אלה הם למעשה קבצים (לא קבצים אמתיים על דיסק) כי המערכת מתייחסת לכל דבר כקובץ, ולכן ניתן להשתמש עליהם בפונקציות שעובדות עם קבצים, כמו למשל fprintf או fscanf.
 

BravoMan

Active member
יצא לך לעבוד במסוף?

החלון השחור הזה שבו אתה מקליד פקודות?

ברוב הפצות לינוקס מודרניות, היישום שמפרש ומבצע את הפקודות האלה נקרא BASH:
http://en.wikipedia.org/wiki/Bash_(Unix_shell)

בדומה למה שהוא עושה, עליך לנתח שורה של טקסט שהמשתמש הקליד, להחליט מה ממנה הוא שם של פקודה (קובץ ריצה) ומה הם פרמטרים שצריך להעביר לאותו קובץ ריצה, ולהפעיל את הקובץ ריצה עם אותם פרמטרים.

רמז: רווחים, רווחים, רווחים.
 

techtest

New member
יצא לי לעבוד איתו

ועם הפקודות שלו כמו (ls, cd וכו...)
אני מבין מה צריך לעשות, אבל קשה להבין איך אני מבצע את זה
 

BravoMan

Active member
טוב, זו הרי מהות התרגיל...

בגדול אתה אמור לעבוד בלולאה, ולבצע את הדברים הבאים:

1. לקלוט שורה מהמשתמש.
2. לעבור על הקלט ולנתח אותו - להפריד אותו לחלקים כמו שם פקודה, פרמטרים והפניות של קלט ופלט.
3. להריץ את הפקודה עם הפרמטרים וההפניות המתאימות.
4. לחזור על 1.

כדאי גם לבדוק פקודה מיוחדת exit כדי לדעת מתי המשתמש סיים להקליד פקודות.

אם יש דברים ספציפיים שאתה מתקשה בהם, תשאל.
בנוסף, אני ממליץ לך לשאול גם בפורום שפות תכנות כאן בתפוז.

בהצלחה!
 
למעלה