Как да използвате Open System Call в C

How Use Open System Call C



Системните повиквания се използват в дистрибуциите на Linux, за да осигурят врата в рамките на операционната система Linux и програмите. Операционната система Linux използва библиотеката Glibc, за да поддържа системни обаждания в нея, докато използва езика C. Има и много повече начини за използване на системни повиквания. В това ръководство за статия ще обсъждаме отвореното системно обаждане в системата Linux. Отвореното системно обаждане е използвано за бързо отваряне на файла, посочен в пътя. Той ни информира за файловия дескриптор на създаден от потребителя файл. Използвахме Ubuntu 20.04, за да получим малко практическо отваряне на системна система.

Инсталирайте библиотеки

Езикът C изисква някои допълнителни библиотечни пакети да бъдат инсталирани като предпоставки. На първо място, трябва да инсталирате пакета manpages-dev, за да проверите информацията относно системните повиквания. Отворете терминала на командния ред от зоната на активност и изпълнете инструкцията по -долу, за да инсталирате страници.







$ sudo apt инсталирате страници-dev



Резултатът за завършване на инсталацията е даден по -долу.







Сега ще проверим за отворено системно обаждане с помощта на командата man, както е показано по -долу.

$ човек2отворен



Изходната страница за отворено системно обаждане е показана по -долу. Можете да видите допълнителната информация относно него. Натиснете бутона q, за да го излезете.

Горният синтаксис показва първите три реда на необходимите библиотеки, които да се добавят за системни повиквания. Налични са три синтаксиса за отвореното системно обаждане. Първият синтаксис показва името на пътя, което е името на файл, който трябва да се отвори. Вторият параметър, флагове, показва режима на файл, например четене или запис. Вторият синтаксис може да се използва, когато файлът не съществува. Режимът на параметрите се използва за показване на привилегиите във файла.

Сега е време да инсталирате GCC компилатора за отстраняване на грешки на C код в дистрибуцията на Ubuntu 20.04 Linux. За целта изпълнете инструкцията по -долу в черупката, за да го направите.

$ sudo apt install gcc

Изисква да докоснете Y, за да продължите да инсталирате GCC компилатора, в противен случай натиснете бутона n, за да затворите инсталацията. Затова натиснете бутона y и натиснете Enter, за да продължите.

Изходът за завършване е показан по -долу.

Пример 01

Нека да разгледаме много простия пример за отворено системно обаждане. Първо, отворете командната обвивка и създайте нов текстов файл test.txt, като използвате простата команда за докосване, както следва:

$докосванеtest.txt

Добавете някои данни към него ръчно. Можете да видите данните във файл, като използвате командата cat по -долу.

$коткаtest.txt

Сега нека създадем нов C файл, използвайки команда nano в черупката, както е показано по -долу.

$нанонов.в

GNU nano файлът по -долу ще бъде отворен. Трябва да въведете долния код на език C в него. Можете да видите, че сме добавили необходимите библиотечни пакети за правилното изпълнение на C кода. След това дефинирахме основната функция за работа при отворен системен разговор. Декларирахме две целочислени променливи. Променливата n се използва за преброяване на буферните стойности, а fd се използва за файловия дескриптор. Декларирахме буферния масив от тип букви като buf с размер 50. Отвореното системно обаждане е използвано за четене на съдържанието от файла test.txt и връщането му във файловия дескриптор. O_RDONLY е използван за четене. Следващият ред показва системното извикване за четене, за да събере 10 -те байта от буфера и да го върне в цяло число n. Също така, командата write е била използвана за записване на съдържанието или буферните данни във файловия дескриптор, който е изходният екран В нашия случай в момента. Запишете този файл с помощта на Ctrl+S и го затворете с помощта на командата Ctrl+X.

#включва
#включва
#включва
#включва

intглавен()
{
intн,fd;
charбуф[петдесет];
fd=отворен(тест.текст,O_RDONLY);
н=Прочети(fd,буф, 10);
пиши(1 ,буф, 10);

Нека първо компилираме C кода за отворено системно обаждане, като използваме командата gcc по -долу.

$gccнов.в

Сега е време да проверите изхода за C кода за отворено системно обаждане. Нека използваме командата a.out по -долу в черупката. Изходът показва 10 -те байта от съдържанието на файл test.txt.

$./да се.навън

Нека вземем друг пример за записване на съдържанието на един файл в друг файл с помощта на отворено системно обаждане. За да създадете нов C файл, използвайки командата nano, както е показано по -долу.

$ nano нов.° С

Затова вземете същия код с малка промяна в него. Определихме друг дескриптор на файлове в кода като fd1. Целият код е един и същ, с изключение на един допълнителен ред. Вторият последен ред на кода е използвал отвореното системно обаждане, за да създаде нов файл с име target, използвайки O_CREAT и режима, само за запис като O_WRONLY. 0642 показва привилегиите, присвоени на този файл. И файлът е върнат в нов файлов дескриптор. Следващият ред показва команда за записване на байтовете съдържание в буфера според дескриптора на файла. Запазете файла и го затворете.

Изпълнете командата gcc compile за отстраняване на грешки в езиковия файл C.

$ gcc нов.° С

За да покажете изхода на C код, опитайте инструкцията a.out в черупката, както е показано по -долу. Няма изход, защото изходът е пренасочен към новосъздадената файлова цел.

$./да се.навън

Нека проверим данните за целта на файла с помощта на командата cat. Изходът показва, че файлът има 20 байта.

$ котка цел

Заключение

В горния урок ви обяснихме да използвате отворен системен разговор на език C, като използвате компилатора gcc. С помощта на различни примери, обяснени в това ръководство, ще ви накараме да реализирате желаната от вас програма.