Команды ipcs и ipcrm
Как мы видели из предыдущего примера, созданная область разделяемой памяти сохраняется в операционной системе даже тогда, когда нет ни одного процесса, включающего ее в свое адресное пространство. С одной стороны, это имеет определенные преимущества, поскольку не требует одновременного существования взаимодействующих процессов, с другой стороны, может причинять существенные неудобства. Допустим, что предыдущие программы мы хотим использовать таким образом, чтобы подсчитывать количество запусков в течение одного, текущего, сеанса работы в системе. Однако в созданном сегменте разделяемой памяти остается информация от предыдущего сеанса, и программы будут выдавать общее количество запусков за все время работы с момента загрузки операционной системы. Можно было бы создавать для нового сеанса новый сегмент разделяемой памяти, но количество ресурсов в системе не безгранично. Нас спасает то, что существуют способы удалять неиспользуемые ресурсы System V IPC как с помощью команд операционной системы, так и с помощью системных вызовов. Все средства System V IPC требуют определенных действий для освобождения занимаемых ресурсов после окончания взаимодействия процессов. Для того чтобы удалять ресурсы System V IPC из командной строки, нам понадобятся две команды, ipcs и ipcrm.
Команда ipcs выдает информацию обо всех средствах System V IPC, существующих в системе, для которых пользователь обладает правами на чтение: областях разделяемой памяти, семафорах и очередях сообщений.
Команда ipcs Синтаксис команды ipcs [-asmq] [-tclup] ipcs [-smq] -i id ipcs -h Описание команды Команда ipcs предназначена для получения информации о средствах System V IPC, к которым пользователь имеет право доступа на чтение. Опция -i позволяет указать идентификатор ресурсов. Будет выдаваться только информация для ресурсов, имеющих этот идентификатор. Виды IPC ресурсов могут быть заданы с помощью следующих опций:
Опции [-tclup] используются для изменения состава выходной информации. По умолчанию для каждого средства выводятся его ключ, идентификатор IPC, идентификатор владельца, права доступа и ряд других характеристик. Применение опций позволяет вывести:
Опция -h используется для получения краткой справочной информации. |
Из всего многообразия выводимой информации нас будут интересовать только IPC идентификаторы для средств, созданных вами. Эти идентификаторы будут использоваться в команде ipcrm, позволяющей удалить необходимый ресурс из системы. Для удаления сегмента разделяемой памяти эта команда имеет вид:
ipcrm shm <IPC идентификатор>
Удалите созданный вами сегмент разделяемой памяти из операционной системы, используя эти команды.
Команда ipcrm Синтаксис команды ipcrm [shm | msg | sem] id Описание команды Команда ipcrm предназначена для удаления ресурса System V IPC из операционной системы. Параметр id задает IPC идентификатор для удаляемого ресурса, параметр shm используется для сегментов разделяемой памяти, параметр msg – для очередей сообщений, параметр sem – для семафоров. |