diff --git a/README.md b/README.md index e6a1b24..b4281d4 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ A Linux daemon runs continuously written in golang. Refer to [ahenk-docs/dev](https://git.aliberksandikci.com.tr/Liderahenk/ahenk-docs/src/branch/main/dev/resources.md#daemon-linux) for resources +This repo will be include two separate daemons. One of them is written with C language for understanding native daemon processes [c-daemon](c-daemon/) . Other one is written in go for implement same deamon concepts to go language and using with native performance [go-daemon](go-daemon/)
--- @@ -17,4 +18,18 @@ It is not mandatory but daemon processes are usually named to end with the lette - Initial operations, such as reading configuration files or obtaining necessary system resources, must be performed before the process becomes a daemon -- \ No newline at end of file +- A background running process is created with init as its parent process. For this purpose, a sub-process is forked from the init process first, and then the upper process is terminated with exit + +- A new session should open by calling the setsid function, and the process should be disconnected from the terminal + +- All open file descriptors inherited from the parent process are closed + +- Standard input, output, and error messages are redirected to `/dev/null` + +- The working directory of the process must change + +The operating system groups processes into session and process groups. Each session consists of process groups. + +Processes receive their inputs and send their outputs to **controlling terminal**. A controlling terminal is associated with only **one** session at a time + +A session and process groups in it have identification (**ID**) numbers; these identification numbers are the process identification numbers (**PID**) of the session and process group leaders. A child process shares the same group as its parent process \ No newline at end of file