[Comm] Как работает fork()?
AD
=?iso-8859-1?q?adq1_=CE=C1_mail=2Eru?=
Ср Авг 25 13:11:24 MSD 2004
Привет!
Поясните как работает fork().
Если не ошибаюсь, в результате вызова, дублируются, в частности, файловые
дескрипторы.
Что будет если:
1. Файл открыт для эксклюзивного доступа. Вторая копия сможет работать с
файлом?
2. Где-то в расшареной памяти есть мьютекс - используется несколькими
процессами. Процесс захватил мьютекс и вызвал fork. Каково будет состояние
мьютекса во второй копии.
3. В процессе 2 потока. Один поток ожидает получения данных: int
result=read(h, .. , .. ); Данные не готовы и драйвер устройства усыпляет
поток:
static DECLARE_WAIT_QUEUE_HEAD(wq);
...
interruptible_sleep_on(&wq);
В это время второй поток делает вызов fork. Что будет содержать result во
второй копии?
--
AD
Подробная информация о списке рассылки community