'Read from pipe.'

def _read(self, cnt):

    data = self._fd.read(cnt)
    if ((len(data) == cnt) or (not data)):
        return data
    buf = [data]
    cnt -= len(data)
    while (cnt > 0):
        data = self._fd.read(cnt)
        if (not data):
            break
        cnt -= len(data)
        buf.append(data)
    return EMPTY.join(buf)
