One thing I didn't mention is that if all you want are two STREAMS endpoints connected like normal pipes except bi-directional, you can omit the mknod step and give one end to a child process. This doesn't require being root, only the mknod does.