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