Anda di halaman 1dari 5

1.

Program daemon 1, source code nya :


int main(void) {FILE *tulis,*catatan;
pid_t pid;
char perintah[100],berkas1[100],berkas2[100];
int nilai;
pid = fork();
if (pid < 0)
{exit(EXIT_FAILURE);
}
if (pid > 0)
{exit(EXIT_SUCCESS);
}
umask(0);
sid = setsid();
if (sid < 0)
{exit(EXIT_FAILURE);
}
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
tulis = fopen(catatan.txt, r);
while(fscanf(tulis,%s,&perintah)!=EOF)
{if(strcmp(perintah,buat)==0){
fscanf(tulis,%s,&berkas1);
buatfile(berkas1);
}
if(strcmp(perintah,hapus)==0)
{fscanf(tulis,%s,&berkas1);
hapus(berkas1);
}
if(strcmp(perintah,waktu)==0)
{fscanf(tulis,%s,&berkas1);
nilai = atoi(berkas1);
waktu(nilai);
}
if(strcmp(perintah,ganda)==0)
{fscanf(tulis,%s,&berkas1);
fscanf(tulis,%s,&berkas2);
ganda(berkas1,berkas2);
}
if(strcmp(perintah,pindah)==0)
{fscanf(tulis,%s,&berkas1);
fscanf(tulis,%s,&berkas2);
pindah(berkas1,berkas2);
}
}

Daemon 2
void catat(char *pesan,char nama[100])
{pid_t pid;
pid = fork();
if (pid < 0)
{exit(EXIT_FAILURE);
}
if (pid > 0)
{exit(EXIT_SUCCESS);
}
umask(0);
sid2 = setsid();
if (sid2 < 0)
{exit(EXIT_FAILURE);
}
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
time_t curtime;
struct tm *loctime;
FILE *pf;
char buffer[SIZE];
curtime = time(NULL);
loctime = localtime(&curtime);
strftime (buffer, SIZE, [%d/%m/%y (%I:%M %p)], loctime);
pf=fopen(wajib.log, a+);
fprintf(pf,%s %s %sn, buffer, pesan, nama);
fclose(pf);
}

3.

Fungsi Menghapus File


void hapus(char nama[100])
{FILE *baru1 = fopen(nama,r);
if(baru1 == NULL)
{catat(nama,Tidak Ada);
}
else
{remove(nama);
catat(nama,Telah Berhasil Dihapus);
}
}

4.

Fungsi Waktu
Void waktu(int lama)
{sleep(lama);
}

5.

Fungsi Buat File

void buatfile(char nama[100])


{FILE *baru1 = fopen(nama,r);
if(baru1 != NULL)
{catat(nama,Sudah Ada);
}
else
{fopen(nama, w+);
catat(nama,Telah Berhasil Dibuat);
}
}

6.

Fungsi Pindah File


void pindah(char asal[100],char tujuan[100])
{FILE *baru1,*baru2;
baru1 = fopen(asal,r);
baru2 = fopen(tujuan,w+);
char string[100];
if(baru1 != NULL)
{while(fgets(string,100,baru1) != NULL)
{fputs(string,baru2);
}
catat(asal,Telah Berhasil Dipindah);
}
else
{catat(asal,Tidak ditemukan);
}
fclose(baru1);
fclose(baru2);
remove(asal);
}

7.

Fungsi Ganda File


void ganda(char asal[100],char tujuan[100])
{FILE *baru1,*baru2;
baru1 = fopen(asal,r);
baru2 = fopen(tujuan,w+);
char string[100];
if(baru1 != NULL)
{while(fgets(string,100,baru1) != NULL)
{fputs(string,baru2);
}
catat(asal,Telah Berhasil Digandakan);
}
else
{
catat(asal,Tidak ditemukan);
}
fclose(baru1);
fclose(baru2);
}