Системный вызов Semctl в C

Что такое Extern в C Программирование и разработка

Язык C включает системный вызов semctl в системе Linux. Этот системный вызов широко используется в системе Linux для выполнения процессов управления, заданных консольной оболочкой на некотором конкретном наборе семафоров. Семафоры — это известные IP-адреса, широко используемые для предоставления доступа процессам для связи друг с другом. Семафор может быть переменной с абстрактным типом данных для управления доступом к 1 ресурсу для многих процедур. Следовательно, здесь используется системный вызов semctl для управления набором семафоров. Начнем с регистрации в системе Linux.

Откройте консольное приложение из области поиска. Быстрый альтернативный способ открыть консоль — нажать «Ctrl + Alt + T».

Пример:

Создайте новый файл C в домашней папке системы Linux с помощью команды «touch». Мы назвали этот файл C как «semctl.c». Вы можете называть его как хотите. Запрос такой:

touch semctl.c

Редактор GNU nano будет использоваться для редактирования и открытия файла. Итак, указанный ниже запрос был использован для открытия файла «semctl.c».

nano semctl.c

Как показано на изображении ниже, файл уже был открыт в редакторе. Запишите тот же код в свой файл, чтобы увидеть, как работает системный вызов semctl (). Заголовочный файл для ввода-вывода и семафоры были включены в начало файла C. Основной метод был объявлен вместе с другой функцией, get_val (). Начиная с основного метода, мы определили переменную «v», получающую значение от функции get_val. Этот метод был вызван при передаче с двумя аргументами в параметрах. Теперь управление передано функции get_val (). Эта функция содержит два аргумента, например, sid как идентификатор семафора и «semnum» как номер семафора. Переданные значения 1 и 4 будут сохранены в этих аргументах.

Команда semctl использовалась в функции для получения текущего набора семафоров с использованием идентификатора семафора и номера семафора. Здесь используется функция GETVAL для получения текущего значения семафора. После сбора значения семафора оно возвращается в основной метод. Значение было сохранено в переменной «v». Значение этой переменной будет отображаться с помощью оператора printf, показанного в коде C. Теперь вы можете сохранить завершенный код, нажав «CTRL + S», и оставить его обратно в консоль, используя команды быстрого доступа «Ctrl + X».

Читайте также:  Vim или Emacs

Скомпилируем файл «semctl

Скомпилируем файл «semctl.c» в консоли. Используйте рекомендуемый компилятор «gcc» для таких типов сложных кодов C. Компиляция возвращает предупреждение, но паники нет. Запустите ваш файл с помощью команды «a.out». Выходные данные показывают, что текущее значение семафора равно «-1».

gcc semctl.c
$ ./a.out

Давайте откроем файл еще раз, чтобы немного изменить его. Откройте его с помощью редактора «nano» и определите переменную «MAX_COMPS» с некоторым значением, например 10. На этот раз обновите код с помощью сценария, показанного ниже. Начнем с инициализации основного метода. Он содержит вызов функции метода comp_use (). Теперь управление передано методу comp_use.

Функция comp_use содержит цикл «for» для использования значения переменной «MAX_COMPS» в качестве максимального значения для цикла «for». Пока цикл не завершится, в операторе печати будет отображаться номер компьютера. Он также получает и печатает текущее значение семафора из метода get_val, вызывая его здесь. Метод get_val был выполнен и вернул его значение в оператор печати функции comp_use (), чтобы отобразить его на экране. Сохраните файл кода еще раз и выйдите из него, чтобы вернуться.

содержит цикл «for» для использования значения переменной

Теперь нам нужно скомпилировать обновленный код с помощью команды «GCC» для компиляции. После успешной компиляции мы выполнили файл и получили значение семафора для каждого компьютера.

gcc semctl.c
$ ./a.out

Заключение

Системный вызов semctl и его работа были ясно продемонстрированы в этом руководстве на языке C с использованием системы Ubuntu 20.04 Linux. Мы надеемся, что эта статья окажется для вас полезной при понимании и изучении концепций семафоров в системе Linux.

Оцените статью
bestprogrammer.ru
Добавить комментарий