Задания на лабораторную работу №3

1. Процесс 1 порождает потомка 2, который в свою очередь порождает потомка 3. Добиться того, чтобы эти процессы гарантированно заканчивались в порядке 3, 2, 1.

2. Процесс 1 открывает файл и после этого порождает потомка 2. Процесс 1 пишет в файл, процесс 2 читает из файла и выводит прочитанное на экран. Организовать чтение после записи без использования сигналов.

3. Процесс 1 открывает файл и порождает потомков 2 и 3. Потомки пишут в файл по N байт и завершают работу. После этого процесс 1 считывает данные из файла и выводит на экран. Объяснить полученный результат.

4. Процесс 1 открывает файл и порождает потомка 2. Оба процесса после этого пишут в файл по очереди по N байт. Организовать M циклов записи с помощью сигналов.

5. Процесс 1 открывает файл и порождает потомка 2, после этого пишет в файл N байт, закрывает его и завершается. Потом процесс 2 пишет N байт в файл, закрывает файл и завершается. Для определения очередности записи использовать функцию fstat.

6. Процесс 1 открывает файл и порождает потомка 2, который в свою очередь порождает потомка 3. Процессы 2 и 3 пишут в общий файл, причем процесс 3 не может начать писать раньше, чем процесс 2. Организовать очередность без использования сигналов.

7. Процесс 1 порождает процесс-потомок, ждет его завершения, после этого порождает еще один процесс-потомок и так N раз. Каждый процесс выдает на экран сообщения о начале и завершении работы.

8. Процесс 1 открывает существующий файл и порождает потомков 2 и 3. Все процессы читают из файла данные по одному байту и выводят их на экран с пометками, какой именно процесс выводит данные. Объяснить полученный результат.

9. Процесс 1 открывает файл и порождает потомка 2. Процесс 2 пишет N байт в файл по одному байту, процесс 1, не дожидаясь окончания процесса-потомка, начинает читать из файла по одному байту и выводит их на экран. Процесс 1 завершается, когда достигнут конец файла. Объяснить полученный результат.

10. Программа порождает три процесса, каждый из которых записывает в общий файл число, равное своему номеру. Манипулируя схемой порождения процессов и используя сигналы обеспечить следующее содержимое файла:

1) 1 2 3 2 1

2) 1 2 1 3 1 3 3

3) 3 1 2 1 2 3

11. Процесс 1 открывает файл и после этого порождает потомка 2. Процесс 2 начинает запись в файл после получения сигнала SIG1 от процесса 1 и прекращает ее после получения от процесса 1 сигнала SIG2, который посылается через N секунд после SIG1. Затем процесс 1 читает данные из файла и выводит их на экран.

12. Процесс 1 открывает файл и после этого порождает потомка 2. Один процесс пишет в файл один байт, посылает другому процессу сигнал, другой читает из файла один байт, выводит прочитанное на экран и посылает сигнал первому процессу. Организовать N циклов запись/чтение.

13. Процесс 1 открывает файл и порождает потомков 2 и 3. Потомки после сигнала от предка пишут в файл по N байт, посылают сигналы процессу 1 и завершают работу. После этого процесс 1 считывает данные из файла и выводит на экран.

14. Процесс 1 открывает файл и после этого порождает потомка 2, который в свою очередь порождает потомка 3. Процесс 2 пишет N байт в общий файл, посылает сигнал процессу 3, который тоже пишет N байт в файл и посылает сигнал процессу 1, который считывает данные из файла и выводит их на экран.

15. Процесс 1 открывает файл и порождает потомка 2, после этого пишет в файл N байт и посылает сигнал процессу 2. Процесс 2 пишет N байт в файл, посылает сигнал процессу 1 и завершается. Процесс 1, получив сигнал, считывает данные из файла, выводит их на экран и завершается.

16. Процесс 1 открывает файл и порождает потомков 2 и 3. Потомки пишут в файл по очереди по N байт (M циклов записи, организовать с помощью сигналов) и завершаются. Последний из них посылает сигнал процессу 1, который читает данные и выводит их на экран.

17. Процесс 1 открывает файл, порождает потомка 2, пишет в файл N байт и посылает сигнал SIG1 процессу 2. Процесс 2 по сигналу SIG1 читает данные, выводит их на экран и завершается. Если сигнал от процесса 1 не поступит в течение M секунд, процесс 2 начинает считывать данные по сигналу SIGALRM.

18. Процесс 1 открывает файл и порождает потомка 2, который в свою очередь порождает потомка 3. Процессы 2 и 3 пишут в общий файл, причем процесс 3 не может начать писать раньше, чем процесс 2. Организовать очередность с помощью сигналов. Как только размер файла превысит N байт, процесс 1 посылает потомкам сигнал SIG2 о завершении работы, считывает данные из файла и выводит их на экран.

19. Процесс 1 открывает файл и порождает потомка 2. Процесс 1 с интервалом в 1 секунду (через alarm) посылает M сигналов SIG1 процессу 2, который по каждому сигналу пишет в общий файл по N чисел. Потом процесс 1 посылает процессу 2 сигнал SIG2, процесс 2 завершается. Процесс 1 считывает данные из файла и выводит их на экран.

20. Процесс 1 открывает файл и порождает потомков 2 и 3. Процесс 1 с интервалом в 1 секунду (через alarm) по очереди посылает N сигналов SIG1 процессам 2 и 3, которые по каждому сигналу пишут в общий файл по M чисел. Потом процесс 1 посылает потомкам сигнал SIG2, процессы 2 и 3 завершаются. Процесс 1 считывает данные из файла и выводит их на экран.

21. Процесс 1 открывает два файла и порождает потомков 2 и 3. Процессы 2 и 3 с интервалом в 1 секунду (через alarm) посылают по N сигналов процессу 1, который по каждому сигналу пишет в соответствующий файл по M чисел. Потом процессы 2 и 3 считывают данные из файлов, выводят их на экран и завершаются. Процесс 1 завершается последним.

22. Процесс 1 открывает два файла и порождает потомков 2 и 3. Процессы 2 и 3 посылают по одному сигналу процессу 1, который по каждому сигналу пишет в соответствующий файл M чисел. Процессы 2 и 3 считывают данные из файлов и выводят их на экран. С помощью сигналов организовать непересекающийся вывод данных.

23. Процесс 1 открывает файл и порождает потомка 2. Процесс 2 по сигналу SIG1 от процесса 1 начинает писать в файл, по сигналу SIG2 прекращает запись, а потом по сигналу SIG1 завершается. Сигнал SIG1 поступает с задержкой в 1 секунду относительно первого сигнала SIG2.

24. Процесс 1 открывает файл и порождает потомка 2. Процесс 1 читает данные из файла, процесс 2 пишет данные в файл следующим образом: по сигналу SIG1 от процесса 1 процесс 2 записывает в файл N чисел и посылает процессу 1 сигнал окончания записи; процесс 1 по этому сигналу считывает данные и посылает процессу 2 сигнал SIG1. Процесс 2 всегда пишет данные в начало файла. Организовать M циклов записи/чтения. Прочитанные данные выводятся на экран.

25. Процесс 1 открывает существующий файл и порождает потомка 2. Процесс 1 считывает N байт из файла, выводит их на экран и посылает сигнал SIG1 процессу 2. Процесс 2 также считывает N байт из файла, выводит их на экран и посылает сигнал SIG1 процессу 1. Если одному из процессов встретился конец файла, то он посылает другому процессу сигнал SIG2 и они оба завершаются.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: