Perl permite esto con su syscall
función:
$ perldoc -f syscall
syscall NUMBER, LIST
Calls the system call specified as the first element of the list,
passing the remaining elements as arguments to the system call. If
⋮
La documentación también da un ejemplo de llamar a write (2):
require 'syscall.ph'; # may need to run h2ph
my $s = "hi there\n";
syscall(SYS_write(), fileno(STDOUT), $s, length $s);
Sin embargo, no puedo decir que alguna vez haya usado esta función. Bueno, antes de ahora para confirmar el ejemplo sí funciona.
Esto parece funcionar con getrandom
:
$ perl -E 'require "syscall.ph"; $v = " "x8; syscall(SYS_getrandom(), $v, length $v, 0); print $v' | xxd
00000000: 5790 8a6d 714f 8dbe W..mqO..
Y si no tiene getrandom en su syscall.ph, entonces podría usar el número en su lugar. Es 318 en mi cuadro de prueba de Debian (amd64). Tenga en cuenta que los números de syscall de Linux son específicos de la arquitectura.
/dev/urandom
. Ciertamente puedes hacerlo desde un script de shell./dev
aún no esté disponible. ¡Pero entonces difícil de imaginar sería Perl!/dev/random
hasta que se desbloquea y luego leer/dev/urandom
?