int fcntl(int fildes, int cmd, ...);

Mit der Funktion fcntl()werden Optionen oder Operationen auf einer geöffneten Datei durchgeführt. Beispielsweise kann eine Datei für einen Prozess blockiert werden, um dass gemeinsame Schreiben zweier Prozesse zu verhindern. Der Funktion wird als Parameter fildes der Datei-Deskriptor übergeben, bei dem ein Kommando ausgeführt werden soll. Das Kommando wird mittels des Parameters cmd angegeben. Benötigt das Kommando Parameter, so werden sie zusätzlich angegeben. Der Rückgabewert liefert das Ergebnis des Kommandos. Da Sockets auch wie Dateien behandelt werden, bietet die Funktion fcntl() auch Optionen für Sockets. Eine dieser Optionen ist, ob der Socket im blockierenden oder nicht-blockierenden Modus arbeitet:

Das folgende Beispiel zeigt, wie ein Socket in den nicht-blockierenden Mode versetzt wird.

/* zuerst wird mit dem Kommando F_GETFL
 ermittelt welche Eigenschaften die Datei hat. */

int flags = fcntl(fd, F_GETFL, 0);

/* anschließend wird der Socket in 
den nicht blockierenden Mode versetzt*/
 
fcntl(fd, F_SETFL, flags | O_NONBLOCK);