The future OpenBSD 5.6 (scheduled in november 2014) will have a new getentropy() syscall and a new getentropy() in their C library which avoid the need of a file descriptor:
http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man2/getentropy.2?query=getentropy&sec=2
Note: "The maximum buffer size permitted is 256 bytes. If buflen exceeds this, an error of EIO will be indicated."
The file descriptor of os.urandom() causes perfomance issues and surprising bugs: #18756, #21207.
For Python 2.7, see also the PEP 466 and the issue #21305.
See also issues:
- #22181: os.urandom() should use Linux 3.17 getrandom() syscall
- #22542: Use arc4random under OpenBSD for os.urandom() if /dev/urandom is not present |