catern / rsyscall

Process-independent interface to Linux system calls
68 stars 8 forks source link
linux

For more detail on the concepts and motivation behind rsyscall, read the [[file:docs/conceptual.org][conceptual introduction]].

Note that the rsyscall Python API uses some recent Python 3 features: async/await and type annotations. If you haven't seen those before, skim the [[file:docs/background.org][background tutorial]] first.

But, if you want to try it, you can do so with Nix:

+begin_src bash

git clone https://github.com/catern/rsyscall cd rsyscall/python nix-shell python

+end_src

Or you can build it by hand in a virtual environment:

+begin_src bash

git clone https://github.com/catern/rsyscall cd rsyscall python3 -m venv venv . venv/bin/activate pip install -U pip

cd c autoreconf -fvi ./configure --prefix=$PWD/../venv make install cd .. export LD_LIBRARY_PATH=$PWD/venv/lib export PKG_CONFIG_PATH=$PWD/venv/lib/pkgconfig

pip install -e python/ python

+end_src

In [2]: import rsyscall

In [3]: t = await rsyscall.local_process.fork()

In [4]: await t.stdout.write(await t.ptr("Hello world!\n")) Hello world!

+end_example