no need to fdopen()