when you want to fire an event no matter how a process exits.
Signal exit handler
Run a child as if it's the foreground process. Give it stdio. Exit when it exits.
Run some code when the process exits
installs custom cleanup handlers that run on exiting node
a built-in tap extension for t.spawn()
A graceful way to shutdown / handle process exit
A minimal library for executing processes in Node
Manage state with style in every framework
Catch Node.js exit conditions, including errors and unhandled rejections.
Create an AbortSignal that aborts after a delay
A tool for respawning node binaries when special flags are present.
A replacement for process.exit that ensures stdio are fully drained before exiting.
Execute a function on exit without leaking memory, allowing all objects to be garbage collected
A Tailwind CSS plugin for creating beautiful animations.
Easily register termination signals callbacks.
Run some code when the process exits (supports async hooks and pm2 clustering)
Extensions to Node.js child_process module
safely cleanup in signal handlers
A replacement for process.exit that ensures stdio are fully drained before exiting.
log-update fork that uses async-exit-hook internally
Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals
Send CTRL-C to a process on Windows
Run AppleScript and get the result
Run shell commands with captured stdout/stderr, exit code, duration measurement, configurable timeout, environment variables, line-by-line streaming, graceful signal escalation on timeout, and stdin piping.
Simple wrapper around libssh2 allowing to send commands and files, supports stdout/stderr, exit codes and signals.
= Cirron Cirron measures a piece of Ruby code and reports back several performance counters: CPU instruction count, branch misses, page faults and time spent measuring. It uses the Linux perf events interface or @ibireme's KPC demo[https://gist.github.com/ibireme/173517c208c7dc333ba962c1f0d67d12] on OSX. It can also trace syscalls using +strace+, Linux only! == Prerequisites - Linux with perf events support / Apple ARM OSX - C++ - Ruby 3.x == Usage === Performance Counters $ sudo irb irb(main):001> require 'cirron' => true irb(main):002* c = Cirron::collector do irb(main):003* puts "Hello" irb(main):004> end Hello => Counter(time_enabled_ns: 110260, instruction_count: 15406, branch_misses: 525, page_faults: 0) === Tracing Syscalls $ sudo irb irb> require 'cirron' => true irb> trace = Cirron::tracer do irb> # Your code here irb> puts "Hello" irb> end => [#<Syscall:0x00007c6c1a4b3608 @args="1, [{iov_base=\"Hello\", iov_len=5}, {iov_base=\"\\n\", iov_len=1}], 2", @duration="0.000201", @name="writev", @pid="2261962", @retval="6", @timestamp="1720285300.334976">] # Save the trace for ingesting to Perfetto irb> File.write("/tmp/trace", Cirron::to_tef(trace)) => 267 === Tampering with Syscalls Available tampering actions are: error: Inject a fault with the specified errno. retval: Inject a success with the specified return value. signal: Deliver the specified signal on syscall entry. delay_enter: Delay syscall entry by the specified time. delay_exit: Delay syscall exit by the specified time. poke_enter: Modify memory at argN on syscall entry. poke_exit: Modify memory at argN on syscall exit. syscall: Inject a different syscall instead. The when argument can be used to specify when to perform the tampering. See the Tampering section of the [strace manual page](https://man7.org/linux/man-pages/man1/strace.1.html) for more detailed explanaition of the arguments. ``` $ sudo irb irb> require 'cirron' irb> injector = Cirron.injector irb> injector.inject("openat", "error", "ENOSPC") irb> injector.inject("openat", "delay_enter", "1s", when_condition="2+2") irb> injector.run do irb> # Open now fails with "No space left on device" and every irb> # other call to `openat` will be delayed by 1s. irb> File.open("test.txt", "w") irb> end ``` == Additional Information For more detailed information, please visit the project's GitHub page: https://github.com/s7nfo/Cirron
No description provided.
No description provided.
No description provided.
No description provided.