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 :: accuin
  
  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 offsetleft in
  
      writefd (offset + n) (left - nin
  
  writefd 0 (String.length str)
  
;;