スクリプト言語でLinuxシステムコールを呼び出す

スクリプト言語でLinuxシステムコールを呼び出す

スクリプト言語から直接Linuxシステムコール(または少なくともlibcラッパー)を呼び出したいと思います。どのスクリプト言語も気にしません。重要なのはコンパイルされないということです。理由は、基本的に依存関係パスにコンパイラを望まないことに関連していますが、ここでもありません。これを可能にするスクリプト言語(シェル、Python、Rubyなど)がありますか?

特に、ランダムシステムコール。

ベストアンサー1

Perlの機能は以下を可能にしますsyscall

$ 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

ドキュメントには write(2) を呼び出す例も示します。

require 'syscall.ph';        # may need to run h2ph
my $s = "hi there\n";
syscall(SYS_write(), fileno(STDOUT), $s, length $s);

持っているとは言えない一度しかし、この機能を試してみてください。さて、この例が実際に動作していることを確認する前に。

これは次のような場合に機能するようです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..

syscall.phにgetrandomがない場合は、この番号を使用できます。私のDebianテスト(amd64)システムの値は318でした。 Linuxシステムコール番号はアーキテクチャによって異なります。

おすすめ記事