Advertisement
akevintg

NIM Generator (fork & pipe)

Nov 3rd, 2015
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.18 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <unistd.h>
  6. #include <ctype.h>
  7.  
  8. struct dataMhs{
  9.     char nama[100];
  10.     char telp[8];
  11.     int tglLahir;
  12.     char jurusan[100];
  13. };
  14.  
  15. int main(){
  16.     pid_t pFork;
  17.     int pipes[2];
  18.     int flag,i;
  19.     struct dataMhs data;
  20.     if(pipe(pipes)<0)
  21.         printf("Error Pipe");
  22.     pFork=fork();
  23.     if(pFork<0)
  24.         printf("Error Fork");
  25.     else if(pFork==0){
  26.         printf("\nChild Process\n================\n");
  27.         do{
  28.             flag=0;
  29.             printf("Masukan Nama [5-20]: ");
  30.             scanf("%[^\n]s",data.nama);getchar();
  31.             if(strlen(data.nama)<5||strlen(data.nama)>20)
  32.                 flag=1;
  33.         }while(flag==1);
  34.         do{
  35.             flag=0;
  36.             printf("Masukan No.Telp [8-12]: ");
  37.             scanf("%s",data.telp);getchar();
  38.             for(i=0;i<strlen(data.telp);i++){
  39.                 if(!isdigit(data.telp[i]))
  40.                     flag=1;
  41.             }
  42.             if(strlen(data.telp)<8||strlen(data.telp)>12)
  43.                 flag=1;
  44.         }while(flag==1);
  45.         do{
  46.             flag=0;
  47.             printf("Masukan Tgl Lahir: ");
  48.             scanf("%d",&data.tglLahir);getchar();
  49.             if(data.tglLahir<1||data.tglLahir>31)
  50.                 flag=1;
  51.         }while(flag==1);
  52.         do{
  53.             flag=0;
  54.             printf("Jurusan yang diinginkan[Teknik Informatika/Sistem Komputer]: ");
  55.             scanf("%[^\n]s",data.jurusan);getchar();
  56.             if(strcasecmp("teknik informatika",data.jurusan)!=0&&
  57.                 strcasecmp("sistem komputer",data.jurusan)!=0)
  58.                 flag=1;
  59.         }while(flag==1);
  60.         close(pipes[0]);
  61.         write(pipes[1],(struct dataMhs*)&data,sizeof(data));
  62.     }
  63.     else if(pFork>0){
  64.         close(pipes[1]);
  65.         read(pipes[0],(struct dataMhs*)&data,sizeof(data));
  66.         printf("\nParent Process\n================\n\n");
  67.         printf("Data Mahasiswa Baru\n");
  68.         printf("Nama Lengkap : %s\n",data.nama);
  69.         printf("No. Telp     : %s\n",data.telp);
  70.         printf("Tangal Lahir : %d\n",data.tglLahir);
  71.         printf("Jurusan      : %s\n",data.jurusan);
  72.         int randomNIM,kodeJurusan;
  73.         //buat nimnya 170[random 2 angka 12-14][jurusan TI=2,SK=3]0[tglLahir]
  74.         srand(time(NULL));
  75.         randomNIM=rand()%3+12;
  76.         if(strcasecmp("teknik informatika",data.jurusan)==0)
  77.             kodeJurusan=2;
  78.         else
  79.             kodeJurusan=3;
  80.         printf("\n===========================\nNIM ANDA\n===========================\n");
  81.         printf("170%d%d0%d\n",randomNIM,kodeJurusan,data.tglLahir);
  82.  
  83.     }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement