add #if __linux__ for pipe, to not break compatibility