Не соглашусь, в вузе я лабы не только сдавал, а еще и делал, и при этом программа была широкой, сочетала базовые курсы и современные.
А конкретно какие технологии посоветуете изучить?
Я преследую учебные интересы, поэтому хочу разобраться, как обеспечить взаимоисключение.
Все описанные в документации блокировки обслуживают поля структуры, а не сам указатель на неё.
Я не могу заменить одну операцию, так как поле указывает на константную структуру.
Я боюсь, что ядро может читать это поле (например, для вызова функции передачи пакета), когда я его обновляю.
jcmvbkbc: > один из последующих вызовов send/recv завершится с ошибкой
Получается, что после отсылки всех данных нужно выполнить еще один send, передав какой-нибудь мусор, чтобы быть уверенным в том, что данные 100%-но доставлены?
jcmvbkbc: А если после того, как он взялся их доставить, но не успел доставить, физический канал связи разорвется, как посылающая программа узнает об ошибке?
jcmvbkbc: Я правильно понимаю, что на момент выхода из функции send данные уже доставлены? А в случае с UDP не так: ОС вернула управление процессу, но это не означает, что данные доставлены, они, может, и вообще не дойдут?
jcmvbkbc Я использую TCP, почему нет гарантии, что принято будет столько, сколько отправит send? И почему если не получилось принять весь блок, recv не возвращает ошибку?
У меня есть необоснованное мнение, что в Windows документация лучше.
Но это хорошая возможность окунуться в Linux глубже.
Списывать не в моём стиле, но ссылка бы очень пригодилась)
А конкретно какие технологии посоветуете изучить?