2010-10-17 25 views
12

Necesito registrar el uso del socket y escribí una biblioteca LD_PRELOAD.¿Cómo saber si un manejador de archivo es un socket?

El problema es cuando anulo las operaciones de archivo ordinario (por supuesto) de lectura() y escritura().

Entonces, ¿cómo puedo distinguir las descripciones de archivos comunes y los descriptores de socket aparte?

Respuesta

25

Llame al fstat en el descriptor y utilice la macro S_ISSOCK en el resultado.

struct stat statbuf; 
fstat(fd, &statbuf); 
S_ISSOCK(statbuf.st_mode); 
+0

Genial! ¡Muchas gracias! – netom

Cuestiones relacionadas