Már volt róla szó, hogy a TLI kétféle lehetoséget nyújt a kapcsolat (összeköttetés - itt errol van szó) lebontására: rendezett vagy rendezetlen (abortív) lebontásra van lehetoség. Az abortoív lebontás nem garantálja azt, hogy a már elküldött, de a címzetthez még nem kézbesített adatok valamikor is el lesznek juttatva a címzetthez - a rendezett lebontás ezt garantálja. A rendezett lebontáshoz a következo eljárásokat lehet felhasználni:
t_sndrel(tfd);
illetve
t_rcvrel(tfd);
Hogyan is történik a rendezett lebontás? Az összeköttetés általában kétirányú: mindkét kommunikáló fél küldhet adatokat a másiknak. Amikor az egyik fél úgy dönt, hogy nem küld több adatot a másiknak, akkor meg kell hívnia a t_sndrel() TLI függvényt. A másik félnél ekkor a további adatokra várakozó t_rcv() TLI függvény hibával tér vissza (visszatérési értéke -1 lesz) és a t_errno változó a TLOOK konstans értéket fogja tartalmazni. Az TLI könyvtár belso állapotként a T_ORDREL értéket fogja tartalmazni, amit a -- késobb bemutatandó -- t_look() TLI függvénnyel lehet lekérdezni - erre nézzük meg a következo példát (vagyis a t_rcv() milyen környezetben szokott elofordulni):
while (t_rcv(tfd, ...) != (-1)) {
/*
* Adat erkezett, dolgozzuk fel ...
*/
}
if ((t_errno == TLOOK) && (t_look(tfd) == T_ORDREL)) {
t_rcvrel(tfd); /* Vettuk a lebontasi kerelmet */
t_sndrel(tfd); /* Elkuldjuk a mi lebontasi kerelmunket is */
} else {
t_error("Hiba a t_rcv() hivasnal!");
}
Látható, hogy a kommunikációs partner a kapcsolat lebontását a t_rcvrel() függvény meghívásával fogadja el. Ennek a rutinnak a meghívása természetesen "kötelezo".