/*-------------------------------------------------------------------------
*
* noblock . c
* set a file descriptor as blocking or non - blocking
*
* Portions Copyright ( c ) 1996 - 2025 , PostgreSQL Global Development Group
* Portions Copyright ( c ) 1994 , Regents of the University of California
*
* IDENTIFICATION
* src / port / noblock . c
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
#include "c.h"
#include <fcntl.h>
/*
* Put socket into nonblock mode .
* Returns true on success , false on failure .
*/
bool
pg_set_noblock(pgsocket sock)
{
#if !defined (WIN32)
int flags;
flags = fcntl(sock, F_GETFL);
if (flags < 0 )
return false ;
if (fcntl(sock, F_SETFL, (flags | O_NONBLOCK)) == -1 )
return false ;
return true ;
#else
unsigned long ioctlsocket_ret = 1 ;
/* Returns non-0 on failure, while fcntl() returns -1 on failure */
return (ioctlsocket(sock, FIONBIO, &ioctlsocket_ret) == 0 );
#endif
}
/*
* Put socket into blocking mode .
* Returns true on success , false on failure .
*/
bool
pg_set_block(pgsocket sock)
{
#if !defined (WIN32)
int flags;
flags = fcntl(sock, F_GETFL);
if (flags < 0 )
return false ;
if (fcntl(sock, F_SETFL, (flags & ~O_NONBLOCK)) == -1 )
return false ;
return true ;
#else
unsigned long ioctlsocket_ret = 0 ;
/* Returns non-0 on failure, while fcntl() returns -1 on failure */
return (ioctlsocket(sock, FIONBIO, &ioctlsocket_ret) == 0 );
#endif
}
Messung V0.5 in Prozent C=84 H=98 G=91
¤ Dauer der Verarbeitung: 0.21 Sekunden
(vorverarbeitet am 2026-08-09)
¤
*© Formatika GbR, Deutschland