ctypes.sh

A foreign function interface for bash.

Github星跟蹤圖

ctypes.sh

This is ctypes.sh, a foreign function interface for bash.

ctypes.sh is a bash plugin that provides a foreign function interface directly
in your shell. In other words, it allows you to call routines in shared
libraries from within bash.

A (very) simple example will help illustrate:

$ dlcall puts "hello, world"
hello, world

# A more complex example, use libm to calculate sin(PI/2)
$ dlopen libm.so.6
0x172ebf0
$ dlcall -r double sin double:1.57079632679489661923
double:1.000000

ctypes.sh can extend bash scripts to accomplish tasks that were previously
impossible, or would require external helpers to be written.

ctypes.sh makes it possible to use
GTK+ natively in
your shell scripts, or write a high-performance http daemon.

See more examples here

prerequisites

ctypes.sh is dependent on the following libraries and programs:

  • libffi
  • bash
  • libelf (optional)
  • elfutils (optional)
  • libdwarf / libdw (optional)

install

ctypes.sh can be installed from source like this:

$ git clone https://github.com/taviso/ctypes.sh.git
$ cd ctypes.sh
$ ./autogen.sh
$ ./configure
$ make
$ [sudo] make install

By default ctypes.sh is installed into /usr/local/bin and
/usr/local/lib. You can overload the prefix path by defining the
PREFIX environment variable before installing.

$ PREFIX=$HOME make install

example

source ctypes.sh
puts () {
  dlcall puts "$@"
  return $?
}

puts "hello, world"

Here is what people have been saying about ctypes.sh:

  • "that's disgusting"
  • "this has got to stop"
  • "you've gone too far with this"
  • "is this a joke?"
  • "I never knew the c could stand for Cthulhu."

You can read more about ctypes.sh and see it in action on the Wiki

主要指標

概覽
名稱與所有者taviso/ctypes.sh
主編程語言C
編程語言C (語言數: 4)
平台
許可證MIT License
所有者活动
創建於2015-07-27 13:24:56
推送於2024-06-27 01:55:46
最后一次提交2024-06-27 01:55:46
發布數3
最新版本名稱v1.2 (發布於 )
第一版名稱v0.01 (發布於 )
用户参与
星數2.1k
關注者數53
派生數94
提交數159
已啟用問題?
問題數53
打開的問題數21
拉請求數7
打開的拉請求數0
關閉的拉請求數3
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?