Archive for the ‘Operating Systems’ Category

Helper functions for handling the PID file of a background daemon.

October 19, 2014 Leave a comment

In this article I will present to you some useful functions for handling the PID file of a background daemon. Most of the background daemons maintain a PID file usually in a well-known path such as the “/var/run”. For example, the GNOME Display Manager which runs as a background daemon (gdm3) maintains the following file “/var/run/”. A PID file contains the PID number of the daemon process currently running. This information is useful either for validation or for sending various signals to the daemon process. Also, if a background daemon must have a single running instance this can be accomplished by checking if the PID number of the PID file really exists in the system.

Read more…

Useful functions for enabling and disabling the non-blocking I/O mode of file descriptors.

October 18, 2014 Leave a comment

In this article I will present to you two useful functions that can be used whenever you want to enable or disable the non-blocking I/O mode of a file descriptor. By using the enable_io_blocking_for_file_descriptor and disable_io_blocking_for_file_descriptor functions you can enable and disable the I/O blocking of a file descriptor.

Read more…

A safe wrapper implemented in C for freeing dynamic allocated memory.

October 18, 2014 Leave a comment

In this article I will present to you a safe wrapper for freeing memory allocated with *alloc family functions. The standard function “void free (void * pointer)” from stdlib library does not check the given pointer to see whether it is NULL and does not NULL terminate the pointer before it returns either. So, setting a pointer to NULL after freeing is considered a good practice, and can reduce the chances of unpredictable behavior if the memory is later accessed; segmentation faults when the memory is no longer accessible and potential security risks.

Read more…

Macro definitions for handling interruptible POSIX system calls.

October 16, 2014 Leave a comment

In this article I will present to you some macro definitions for handling interruptible system calls.

Read more…

Implementation of functions in C for software signal management in POSIX operating systems – Version 2.

October 14, 2014 Leave a comment

In this article I will present to you a mechanism written in C for handling efficiently software signals in POSIX operating systems. The first thing you have to do is to create the configuration of the signals you want to support. After you decide the appropriate configuration you have to setup the signals support and register the configuration. Later on, when the various software signals occur a generic signal dispatcher will handle the signals according to the specified configuration.

Read more…

Implementation of a C function to convert a typical process into a background service (Daemon) – Version 2.

October 8, 2014 Leave a comment

In a previous article I had shown to you how a typical process in GNU/Linux operating systems can be converted to a background daemon process. The source code from the previous article was taken from an old project I wrote years ago. Nowadays, I have rewritten the daemonizing function in a new project and I think it could be nice to share it. I have simplified the function and now it has a clearer and simpler API.

Read more…

Protection of critical regions of a process in GNU/Linux.

March 7, 2011 Leave a comment

Below, we quote a function for managing a transaction in a hypothetical transaction management system. It is very likely multiple instances of the function to be executed in parallel on a system of symmetric multiprocessing (SMP), on multi-processor platforms or even a multithreaded single processor systems.

Read more…