#include <sys/types.h>Jangan lupa untuk membuat daemon tsb dalam file ekstensi c.
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <syslog.h>
#include <string.h>
int main(void)
{
pid_t pid, sid;
pid=fork();
if (pid<0) {
exit(EXIT_FAILURE);
}
if (pid>0) {
exit(EXIT_SUCCESS);
}
umask(0);
sid=setsid();
if (sid<0) {
exit(EXIT_FAILURE);
}
if ((chdir("/")) <0) {
exit(EXIT_FAILURE);
}
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
while(1) {
sleep(10);
}
exit(EXIT_SUCCESS);
}
Untuk mengetahui proses yang sedang berjalan dari user yang sedang login kita bisa mengetikkan ps ux di terminal. Namun karena kita akan membuatnya di C, kita tidak bisa mengetikkan ps ux begitu saja. Kita perlu memanggil system. Nah cara mudahnya sebenarnya kita bisa menambahkan system("ps ux > logfile.txt") di dalam while(1). Tapi, di sini saya akan membuatnya dengan memadukan bahasa C. Penulisannyapun juga akan tetap dimasukkan di dalam while(1).
char path[1024];popen di atas adalah untuk menjalankan process di system. Jadi, nantinya output dari process tsb akan dimasukkan ke dalam sebuah file txt dengan nama C06_log.txt dan menyimpannya di direktori tsb . Untuk kodingan keseluruhannya adalah sebagai berikut :
FILE *fp = popen("ps ux", "r");
FILE *out= fopen("home/vania/C06_log.txt", "w+");
if (fp == NULL)
{
perror("popen: ");
exit(EXIT_FAILURE);
}
while (fgets(path, sizeof(path), fp) != NULL)
fprintf(out,"%s", path);
pclose(fp);
fclose(out);
sleep(10);
#include <sys/types.h>Untuk menjalankan kodingan tersebut, di terminal kita ketikkan gcc -o proses proses.c (di sini saya menyimpan file tsb dengan proses.c). Lalu jalankan proses tsb dengan ./proses . Nantinya akan keluar C06_log.txt di direktori home dan akan terupdate setiap 10 detik. Jika ingin mengubah updateannya bisa diganti waktunya sesuai yang diinginkan di perintah sleep(). Jika ingin menghentikkan proses, bisa kita ketikkan pkill proses di terminal.
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <syslog.h>
#include <string.h>
int main(void)
{
pid_t pid, sid;
pid=fork();
if (pid<0) {
exit(EXIT_FAILURE);
}
if (pid>0) {
exit(EXIT_SUCCESS);
}
umask(0);
sid=setsid();
if (sid<0) {
exit(EXIT_FAILURE);
}
if ((chdir("/")) <0) {
exit(EXIT_FAILURE);
}
close(STDIN_FILENO);
//close(STDOUT_FILENO);
close(STDERR_FILENO);
while(1) {
char path[1024];
FILE *fp = popen("ps ux", "r");
FILE *out= fopen("home/vania/C06_log.txt", "w+");
if (fp == NULL)
{
perror("popen: ");
exit(EXIT_FAILURE);
}
while (fgets(path, sizeof(path), fp) != NULL)
fprintf(out,"%s", path);
pclose(fp);
fclose(out);
sleep(10);
}
exit(EXIT_SUCCESS);
}
Sekian dan terima kasih.
0 komentar:
Posting Komentar