כיצד להשתמש בשיחת מערכת פתוחה ב- C

How Use Open System Call C



שיחות המערכת משמשות בהפצות לינוקס כדי לספק פתח בתוך מערכת ההפעלה לינוקס והתוכנות. מערכת ההפעלה לינוקס משתמשת בספריית Glibc כדי לתמוך בשיחות מערכת בה תוך שימוש בשפת C. ישנן הרבה יותר דרכים להשתמש גם בשיחות מערכת. במדריך מאמר זה נדון בשיחת המערכת הפתוחה במערכת לינוקס. שיחת המערכת הפתוחה שימשה לפתיחת הקובץ שצוין בנתיב במהירות. הוא הודיע ​​לנו על מתאר הקבצים של קובץ שנוצר על ידי משתמש. השתמשנו באובונטו 20.04 כדי לקבל שיחת מערכת פתוחה מעשית.

התקן ספריות

שפת C דורשת התקנת כמה חבילות ספרייה נוספות כתנאי מוקדם. קודם כל, עליך להתקין את חבילת manpages-dev כדי לבדוק את המידע בנוגע לשיחות מערכת. פתח את מסוף שורת הפקודה מאזור הפעילות ובצע את ההוראה שלהלן להתקנת דפי אדם.







$ sudo apt להתקין דפי man-dev



הפלט להשלמת ההתקנה ניתן להלן.







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

איש $2לִפְתוֹחַ



דף איש הפלט עבור שיחת המערכת הפתוחה מוצג להלן. אתה יכול לראות את המידע הנוסף לגביו. לחץ על כפתור q כדי לצאת ממנו.

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

כעת הגיע הזמן להתקין את מהדר GCC לניפוי באגים של קוד C בהפצת לינוקס אובונטו 20.04. לשם כך, בצע את ההוראה שלהלן בקליפה לשם כך.

$ sudo apt להתקין gcc

זה מחייב אותך להקיש Y כדי להמשיך להתקין את מהדר GCC, אחרת לחץ על כפתור n כדי לסגור את ההתקנה. אז לחץ על כפתור y ולחץ על Enter כדי להמשיך.

הפלט להשלמה מוצג להלן.

דוגמה 01

הבה נבחן את הדוגמה הפשוטה ביותר לשיחת מערכת פתוחה. ראשית, פתח את מעטפת הפקודה וצור קובץ טקסט חדש test.txt באמצעות פקודת המגע הפשוט כדלקמן:

$לגעתtest.txt

הוסף אליו נתונים באופן ידני. אתה יכול לראות את הנתונים בקובץ באמצעות הפקודה cat מתחת.

$חתולtest.txt

כעת ניצור קובץ C חדש באמצעות פקודת nano במעטפת, כפי שמוצג להלן.

$ננוחדש. ג

קובץ ה- GNU nano להלן ייפתח. עליך להקליד בו את קוד השפה למטה C. אתה יכול לראות שהוספנו את חבילות הספרייה הדרושות בכדי לבצע את קוד C כראוי. לאחר מכן, הגדרנו את הפונקציה העיקרית לעבודה על שיחת מערכת פתוחה. הכרזנו שני משתנים שלמים. המשתנה n משמש לספירת ערכי חיץ, ו- fd משמש לתיאור הקבצים. הכרזנו על מערך החיץ מסוג תווים כבוף בעל גודל 50. קריאת המערכת הפתוחה שימשה לקרוא את התוכן מתוך test.txt הקובץ ולהחזירו למתאר הקבצים. ה- O_RDONLY שימש לצורכי קריאה. השורה הבאה מציגה את קריאת מערכת הקריאה לאסוף את 10 הבייטים מהמאגר ולהחזיר אותה למספר השלם n. כמו כן, פקודת הכתיבה שימשה לכתיבת התוכן או נתוני החוצץ לתוך מתאר הקבצים, שהוא מסך הפלט במקרה שלנו כרגע. שמור קובץ זה באמצעות Ctrl+S וסגור אותו באמצעות הפקודה Ctrl+X.

#לִכלוֹל
#לִכלוֹל
#לִכלוֹל
#לִכלוֹל

intרָאשִׁי()
{
intנ,fd;
לְהַשְׁחִירbuf[חמישים];
fd=לִפְתוֹחַ(מִבְחָן.טקסט,O_RDONLY);
נ=לקרוא(fd,buf, 10);
לִכתוֹב(1 ,buf, 10);

בואו קודם כל לאסוף את קוד C לשיחת מערכת פתוחה באמצעות הפקודה gcc להלן.

$gccחדש. ג

עכשיו הגיע הזמן לבדוק את הפלט של קוד C עבור שיחת מערכת פתוחה. בואו נשתמש בפקודה a.out למטה בקליפה. הפלט מציג את 10 הבייטים מתוכן קובץ test.txt.

$./ל.הַחוּצָה

ניקח דוגמא נוספת לכתיבת התוכן של קובץ אחד לקובץ אחר באמצעות קריאת מערכת פתוחה. כדי ליצור קובץ C חדש באמצעות הפקודה nano כמפורט להלן.

חדש $ ננו.ג

אז קח את אותו קוד עם שינוי קטן בו. הגדרנו מתאר קובץ אחר בקוד כ- fd1. כל הקוד זהה למעט שורה נוספת אחת. השורה האחרונה השנייה של הקוד השתמשה בשיחת המערכת הפתוחה ליצירת קובץ חדש בשם יעד באמצעות ה- O_CREAT והמצב, כתיבה בלבד כ- O_WRONLY. 0642 מציג את ההרשאות שהוקצו לקובץ זה. והקובץ הוחזר למתאר קבצים חדש. השורה הבאה הציגה פקודה לכתיבת בתים של תוכן במאגר בהתאם למתאר הקבצים שלה. שמור את הקובץ וסגור אותו.

בצע את הפקודה compile compile כדי לאתר באגים בקובץ שפת C.

$ gcc חדש.ג

כדי להציג את הפלט של קוד C, נסה את ההוראה a.out במעטפת כמפורט להלן. אין פלט מכיוון שהפלט הופנה ליעד הקובץ החדש שנוצר.

$./ל.הַחוּצָה

בואו לבדוק את הנתונים של יעד קובץ באמצעות הפקודה cat. הפלט מראה שיש בקובץ 20 בתים.

מטרה לחתול $

סיכום

במדריך לעיל הסברנו לך להשתמש בשיחת מערכת פתוחה בשפת C באמצעות מהדר gcc. בעזרת דוגמאות שונות המוסברות במדריך זה יוביל אותך ליישם את התוכנית הרצויה לך.