UNIX: взаимодействие процессов | страница 12



Исчезает, если не находится в разделяемой памяти, которая остается открытой и имеет атрибут разделения
Блокировки чтения-записи PosixОбщий доступ, если используется память с общим доступом и атрибутом разделения между процессамиИсчезает, если не хранится в разделяемой памяти, которая остается открытой и имеет атрибут разделенияИсчезает, если не хранится в разделяемой памяти, которая остается открытой и имеет атрибут разделения
Семафоры Posix, хранящиеся в памятиОбщий доступ, если используется память с общим доступом и атрибутом разделения между процессамиИсчезает, если не хранится в разделяемой памяти, которая остается открытой и имеет атрибут разделенияИсчезает, если не хранится в разделяемой памяти, которая остается открытой и имеет атрибут разделения
Именованные семафоры PosixВсе открытые в родительском процессе остаются открытыми в порожденномВсе открытые закрываютсяВсе открытые закрываются
Семафоры System VВсе значения semadj в порожденном процессе устанавливаются в 0Все значения semadj передаются новой программеВсе значения semadj добавляются к значению соответствующего семафора
Блокировка записей fcntlБлокировки в родительском процессе не наследуются порожденным процессомБлокировки не изменяются до тех пор, пока не закроется дескрипторВсе несброшенные блокировки, установленные процессом, снимаются
Отображение памятиОтображения памяти родительского процесса сохраняются в порожденномОтображения памяти сбрасываются (unmap)Отображения памяти сбрасываются
Разделяемая память PosixОтображения памяти родительского процесса сохраняются в порожденномОтображения памяти сбрасываютсяОтображения памяти сбрасываются
Разделяемая память System VПрисоединенные сегменты разделяемой памяти остаются присоединенными в порожденном процессеПрисоединенные сегменты разделяемой памяти отсоединяютсяПрисоединенные сегменты разделяемой памяти отсоединяются
Двери (doors)Порожденный процесс получает копии всех открытых дескрипторов родительского процесса, но только родительский процесс является сервером при активизации дверей через дескрипторыВсе дескрипторы дверей должны быть закрыты, потому что они создаются с установленным битом FD_CLOEXECВсе открытые дескрипторы закрываются

1.6. Обработка ошибок: функции-обертки

В любой реальной программе при любом вызове требуется проверка возвращаемого значения на наличие ошибки. Поскольку обычно работа программ при возникновении ошибок завершается, мы можем сократить объем текста, определив функции-обертки (wrapper functions), которые осуществляют собственно вызов функции, проверяют возвращаемое значение и завершают работу при возникновении ошибок. В соответствии с соглашениями имена функций-оберток совпадают с именами самих функций, за исключением первой буквы, которая делается заглавной, например