Троан Эрик В.
Шрифт:
3. Все ненужные файловые дескрипторы должны быть закрыты. Это может показаться очевидным, однако вы легко можете упустить закрытие тех дескрипторов, которые были унаследованы, а не открыты самой программой. Об этом речь шла в предыдущем разделе.
4. Затем программа должна вызвать
5. Дочерний процесс, продолжающий работу, должен закрыть stdin, stdout и stderr, поскольку он не будет больше использовать терминал. Вместо повторного применения файловых дескрипторов 0, 1 и 2 лучше открывать эти файлы как
6. Для полного разъединения с терминалом, из которого был запущен демон, он должен вызвать
Библиотека С предлагает функцию
Данная функция сразу осуществляет ветвление, и если оно прошло успешно, родительский процесс вызывает
Часть IV
Библиотеки для разработки
Глава 23
Сопоставление строк
Осуществлять сравнение строк можно не только с помощью функции
23.1. Универсализация произвольных строк
В главе 14 мы говорили о том, как с помощью функции
Предложенный шаблон является стандартным выражением универсализации с четырьмя специальными символами, за которые отвечает аргумент
* | Соответствует любой строке, включая пустую. |
? | Соответствует любому одиночному символу. |
[ | Начинает список символов для сопоставления или, если следующим символом является ^ , то список символов для несовпадения. Весь список может совпадать, или не совпадать с одним символом. Список заканчивается знаком ] . |
\ | Следующий символ будет интерпретироваться как литерал, а не как специальный символ. |
На результаты универсализации влияет аргумент
FNM_NOESCAPE | Обработка символа \ как обычного, а не специального символа. |
FNM_PATHNAME | Символы / в строке string не сопоставляются с последовательностью * , ? , или даже [/] в шаблоне pattern ; сопоставление производится только с литералом, а не специальным символом / . |
FNM_NOESCAPE | Первый символ . в шаблоне pattern соответствует символу . в строке string только в том случае, если он является первым символом в строке string или если задано значение FNM_PATHNAME , а символ . в string непосредственно следует за символом \ . |
Функция
Пример использования функции
23.2. Регулярные выражения
Регулярные выражения, используемые в программах