Chcę napisać proste, małe opakowanie C++ RAII przez gniazdo C.Gniazda RAII: kiedy wydać (zamknąć)
Pytanie brzmi, w jakim stanie jest gniazdo, które zostanie zainicjowane (z punktu widzenia RAII) i które kwalifikuje się do wydania.
Na przykład dla gniazda klienta TCP: jeśli wywołanie socket
zakończyło się pomyślnie, ale wywołanie connect
nie powiodło się, czy należy wywołać close
?
Jest to tylko przykład, jestem zainteresowany ogólną odpowiedź, coś jak:
- Każde gniazdo pomyślnie utworzony przez
socket
muszą być zamknięte.
lub - Muszą być zamknięte dla każdego
connect
,listen
lubaccept
.
Strony man dla socket
& przyjaciół i close
nie są bardzo jasne (przynajmniej dla mnie).
Jeśli posiadasz prawidłowy/aktywny uchwyt gniazda, to został zainicjowany. –
@CaptainObvlious Kiedy uchwyt gniazda jest uważany za aktywny/aktywny? – bolov
Uchwyt gniazda jest prawidłowy, gdy 'socket' lub' accept' zwraca wartość inną niż 'INVALID_SOCKET' i aż' zamkniesz 'uchwyt. –