let buffer_size = 4096 let string_from_descr fd = let rec readfd accu = let str = String.create buffer_size in match restart_on_EINTR (read fd str 0) buffer_size with | 0 -> String.concat "" accu | n -> let str = if n < buffer_size then String.sub str 0 n else str in readfd (str :: accu) in readfd [] ;; let descr_from_string str fd = let rec writefd offset left = if left > 0 then let n = restart_on_EINTR (single_write fd str offset) left in writefd (offset + n) (left - n) in writefd 0 (String.length str) ;; |