Az accept(), connect() és write() rendszerhívásoknak esetenként várniuk kell, amíg valamekkora memória felszabadul. Ez azt jelenti, hogy ha egy folyamat a fenti rendszerhívások közül végrehajt egyet, és épp nincs elég szabad memória (egy speciálisan erre a célra kijelölt kernel-területen), akkor a folyamat nem fut tovább, amíg a szükséges mennyiségu memória fel nem szabadul. Ezt meg lehet kerülni a következo példában bemutatott rendszerhívással:
#include <fcntl.h> .. sd=socket( ... ); .. if (fcntl(sd,F_SETFL,FNDELAY) < 0) { perror("hiba az fcntl-nel"); exit(1); }
Ezután a fent említett rendszerhívások közül az accept() és a connect() negatív (vagyis hibát jelzo) visszatérési értékkel tér vissza, és az errno változóba EWOULDBLOCK hibakód kerül, ha a rendszerhívás végrehajtásához a rendszernek várnia kellene. Ekkor a rendszerhívás nem hajtódik végre. Az adatküldo (pl. write() és send()) rendszerhívások (amelyek visszatérési értékként az elküldött adatbyteok számát adják vissza) ha nincs elég memória, akkor (esetleg) kevesebb byteot küldenek el, és ezt adják vissza.