Kamis, 06 November 2014

Daemon

Daemon adalah sebuah proses yang bekerja pada background karena proses ini tidak memiliki terminal pengontrol. Dalam sistem operasi Windows biasanya lebih dikenal dengan sebutan service. Daemon adalah sebuah proses yang didesain supaya proses tersebut tidak mendapatkan intervensi dari user. Daemon biasanya bekerja dalam jangka waktu yang sangat lama dan bertugas menerima request dan menjalankan responsnya. Contoh dari daemon ini misalnya adalah Apache Web Server HTTP daemon. Daemon ini bekerja pada background dan menerima request HTTP pada port tertentu (biasanya 80 atau 8080) dan memberikan
respon terhadap request tersebut, berdasarkan tipe dari request tersebut.

Adapun hal-hal yang membedakan daemon dengan proses lainnya adalah: daemon tidak memiliki parent proses ID, daemon tidak memiliki pengontrol baik itu STDOUT, STDIN, maupun STDERR, dan daemon berjalan dalam previlege super user.

Dibawah ini adalah source code dasar dari sebuah daemon :

#include <stdio .h>
#include <stdlib .h>
#include <unistd .h>
#include <sys types.h>
#include <sys stat.h>
int main()
{
pid_t process_id = 0, sid = 0;
// Create child process
process_id = fork();
// Indication of fork() failure
if (process_id < 0)
{
printf("fork failed!\n");
// Return failure in exit status
exit(1);
}
// PARENT PROCESS. Need to kill it.
if (process_id > 0)
{
printf("process_id of child process %d \n", process_id);
// return success in exit status
exit(0);
}
//unmask the file mode
umask(0);
//set new session
sid = setsid();
if(sid < 0)
{
// Return failure
exit(1);
}
// Close stdin. stdout and stderr
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
while (1)
{
//Put your process here
sleep(10);
}
return 0;
}

Tidak ada komentar:

Posting Komentar