[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