В книге я прочитал, что для того, чтобы сделать межпроцессную связь с использованием труб между двумя процессами, предпочтительно использовать две трубы, которые будут для детей писать в это и для отца, чтобы читать от него, а другой - для противоположного общения. Почему это лучший способ? Нельзя ли использовать только одну трубу, чтобы как родитель, так и дети могли читать и писать на это?Inter-Process Communication, Operating Systems, Pipes
2
A
ответ
0
Вам нужен способ синхронизировать связь между процессами, иначе процесс будет читать/записывать то, что он писал/читал снова и снова. например если вы используете одну трубу:
//parent
while(1)
{
write(p1);
//need a logic to wait so as to read what child wrote back and also so
// that we may not end up reading back what we wrote.
read(p1);
}
//child
while(1)
{
read(p1);
//need a logic to wait so as to read what child wrote back and also so
// that we may not end up reading back what we wrote.
write(p1);
}
Найдите логику доказательства безупречности, чтобы синхронизировать или использовать две трубы. Я говорю с дурацким ожиданием, cuz простые методы, такие как sleep()
или signals
, уязвимы для тех задач планирования, которые OS-пользователи обозначили в своих работах.
Трубы сами блокируют конструкции, поэтому они зависят от них для синхронизации.
//parent
while(1)
{
write(p1);
//pipe blocks until till child writes something in pipe
read(p2);
}
//child
while(1)
{
//pipe waits for parent to write.
read(p1);
//parent is waiting to read.
write(p2);
}
Смежные вопросы
- 1. Interprocess communication
- 2. Interprocess communication in F #
- 3. Python Daemon/Interprocess Communication
- 4. Interprocess Communication CUDA
- 5. InterProcess Communication and BroadCasting
- 6. C - execvp() interprocess communication
- 7. Interprocess communication в .NET
- 8. Java Interprocess Communication
- 9. Snoop interprocess communication
- 10. Interprocess Communication в Java
- 11. Interprocess Communication/Broadcast
- 12. Interprocess Communication через файл
- 13. Interprocess Communication в C++
- 14. Interprocess Communication на Heroku
- 15. Interprocess communication on windows
- 16. Interprocess Communication Python
- 17. C# interprocess communication в том же поле
- 18. interprocess communication in linux design
- 19. Python interprocess communication, огромные данные
- 20. InterProcess Communication Factory (Design Advice)
- 21. Interprocess communication from SQL Server Project
- 22. Interprocess Communication между Excel & C# Application?
- 23. Interprocess communication with Lua and C#
- 24. Interprocess communication with Matlab on Windows
- 25. Interprocess Communication with pipe and file
- 26. Interprocess communication using pipe in Linux
- 27. Interprocess Communication over Network в C++
- 28. Interprocess communication: один сервер и несколько клиентов
- 29. C/UNIX Interprocess communication, отправляющий строку с трубкой
- 30. .Net для Java .Net Interprocess Communication с использованием Java