Use forkpty(3)
from Crystal.
Note: this library is only an experiment/learning project for now. Only tested on Ubuntu 20.04 LTS 64-bit. Requires gcc
to compile.
-
Add the dependency to your
shard.yml
:dependencies: crpty: github: federicotdn/crpty
-
Run
shards install
require "crpty"
result = CrPty.fork_pty()
if result.pid == 0
# Child process!
# Do something like e.g. exec() to Bash
else
# Parent process!
# `result.master_fd` points to the master side of the pseudoterminal
master_fd = IO::FileDescriptor.new result.master_fd
# e.g. Copy bytes from STDIN to master_fd and from master_fd to STDOUT
end
- Fork it (https://github.com/federicotdn/crpty/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
- federicotdn - creator and maintainer