Utility functions for accessing system functionality.
UNIX_PATH_MAX | = | INT2NUM(sizeof(addr.sun_path)) |
The maximum length of a Unix socket path, including terminating null. |
Accept a new client from the given socket.
- fileno (integer): The file descriptor of the server socket.
- Returns: The accepted client‘s file descriptor.
- Raises SystemCallError if something went wrong.
[ show source ]
/* * call-seq: accept(fileno) * * Accept a new client from the given socket. * * - +fileno+ (integer): The file descriptor of the server socket. * - Returns: The accepted client's file descriptor. * - Raises +SystemCallError+ if something went wrong. */ static VALUE f_accept(VALUE self, VALUE fileno) {
Close all file descriptors, except those given in the exceptions array. For example, the following would close all file descriptors except standard input (0) and standard output (1).
close_all_file_descriptors([0, 1])
[ show source ]
/* * call-seq: close_all_file_descriptors(exceptions) * * Close all file descriptors, except those given in the +exceptions+ array. * For example, the following would close all file descriptors except standard * input (0) and standard output (1). * * close_all_file_descriptors([0, 1]) */ static VALUE close_all_file_descriptors(VALUE self, VALUE exceptions) {
Create a SOCK_STREAM server Unix socket. Unlike Ruby‘s UNIXServer class, this function is also able to create Unix sockets on the abstract namespace by prepending the filename with a null byte.
- filename (string): The filename of the Unix socket to create.
- backlog (integer): The backlog to use for listening on the socket.
- Returns: The file descriptor of the created Unix socket, as an integer.
- Raises SystemCallError if something went wrong.
[ show source ]
/* * call-seq: create_unix_socket(filename, backlog) * * Create a SOCK_STREAM server Unix socket. Unlike Ruby's UNIXServer class, * this function is also able to create Unix sockets on the abstract namespace * by prepending the filename with a null byte. * * - +filename+ (string): The filename of the Unix socket to create. * - +backlog+ (integer): The backlog to use for listening on the socket. * - Returns: The file descriptor of the created Unix socket, as an integer. * - Raises +SystemCallError+ if something went wrong. */ static VALUE create_unix_socket(VALUE self, VALUE filename, VALUE backlog) {
Disables any kind of buffering on the C stdout and stderr variables, so that +fprintf()+ on stdout and stderr have immediate effect.
[ show source ]
/* * call-seq: disable_stdio_buffering * * Disables any kind of buffering on the C +stdout+ and +stderr+ variables, * so that +fprintf()+ on +stdout+ and +stderr+ have immediate effect. */ static VALUE disable_stdio_buffering() {
Receive a file descriptor from the given Unix socket. Returns the received file descriptor as an integer. Raises SystemCallError if something went wrong.
You do not have call this method directly. A convenience wrapper is provided by IO#recv_io.
[ show source ]
/* * call-seq: recv_fd(socket_fd) * * Receive a file descriptor from the given Unix socket. Returns the received * file descriptor as an integer. Raises +SystemCallError+ if something went * wrong. * * You do not have call this method directly. A convenience wrapper is * provided by IO#recv_io. */ static VALUE recv_fd(VALUE self, VALUE socket_fd) {
Send a file descriptor over the given Unix socket. You do not have to call this function directly. A convenience wrapper is provided by IO#send_io.
- socket_fd (integer): The file descriptor of the socket.
- fd_to_send (integer): The file descriptor to send.
- Raises SystemCallError if something went wrong.
[ show source ]
/* * call-seq: send_fd(socket_fd, fd_to_send) * * Send a file descriptor over the given Unix socket. You do not have to call * this function directly. A convenience wrapper is provided by IO#send_io. * * - +socket_fd+ (integer): The file descriptor of the socket. * - +fd_to_send+ (integer): The file descriptor to send. * - Raises +SystemCallError+ if something went wrong. */ static VALUE send_fd(VALUE self, VALUE socket_fd, VALUE fd_to_send) {