Skip to content

Latest commit

 

History

History
78 lines (56 loc) · 1.22 KB

README.md

File metadata and controls

78 lines (56 loc) · 1.22 KB

System Calls

Make System Calls in Dart. You can rewrite almost any C program now in Dart!

Currently this library supports Linux and Mac OSX. In the future, there will be partial support for Windows.

Note that the name is misleading. System Calls include both pure C functions and actual System Calls, as well as bindings to commonly-used libraries.

Bindings

  • OpenCV (WIP)
  • Readline
  • Snappy

Examples

This is just a few examples of what is possible.

fork

import "package:syscall/syscall.dart";

void main() {
  print("Prepare to be forked!");
  var pid = fork();
  
  if (pid == 0) {
    print("I am the original process.");
    wait();
  } else {
    print("I am the child process.");
  }
}

chroot

import "dart:io";

import "package:syscall/syscall.dart";

void main(List<String> args) {
  if (args.length == 0) {
    print("usage: chroot <path> [command]");
    exit(1);
  }

  chroot(args[0]);

  var cmd = args.skip(1).join(" ");

  if (cmd.isEmpty) {
    cmd = "bash";
  }

  system(cmd);
}

setuid

import "package:syscall/syscall.dart";

void main() {
  print("Attempting to Gain Superuser.");
  try {
    setUserId(0);
    print("Success.");
  } catch (e) {
    print(e);
  }
}