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