Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.09 KB | None | 0 0
  1. //File: player.c
  2. //Robert Entenmann
  3. //CSCI311
  4. //Project 6
  5.  
  6. #include "player.h"
  7.  
  8. //initializing flag
  9. int flag = 1;
  10.  
  11. //usr1handler
  12. void usr1Handler (int sig)
  13. {
  14.     printf("received show command.\n");
  15. }
  16.  
  17. //usr2handler
  18. void usr2Handler (int sig)
  19. {
  20.     printf ("receieved done command.\n");
  21.     flag = 0;
  22. }
  23.  
  24. int main(int argc, char **argv)
  25. {
  26.     srand(time(NULL));
  27.  
  28.     //variable declarations
  29.     int pick, pid, err;
  30.     int OUT = atoi(argv[1]), ppid = atoi(argv[2]);
  31.     char outBuff[100];
  32.  
  33.     //creating sigaction USR1
  34.     struct sigaction usr1_act;
  35.     /* Set signal handler. */
  36.     usr1_act.sa_handler = (void(*)(int))usr1Handler;
  37.     sigemptyset(&usr1_act.sa_mask);
  38.     usr1_act.sa_flags = 0;
  39.     err = sigaction (SIGUSR1, &usr1_act, NULL);
  40.  
  41.     //error on sigaction
  42.     if (err == -1)
  43.     {
  44.         printf ("CSIG1: Received error %d on sigaction.\n", errno);
  45.         exit(4);
  46.     }
  47.  
  48.     //creating sigaction USR2
  49.     struct sigaction usr2_act;
  50.     /* Set signal handler. */
  51.     usr2_act.sa_handler = (void(*)(int))usr2Handler;
  52.     sigemptyset(&usr2_act.sa_mask);
  53.     usr2_act.sa_flags = 0;        
  54.     err = sigaction (SIGUSR2, &usr2_act, NULL);
  55.  
  56.     //error on sigaction
  57.     if (err == -1)
  58.     {
  59.         printf ("CSIG2: Received error %d on sigaction.\n", errno);
  60.         exit(4);
  61.     }
  62.  
  63.     //getting player process id
  64.     pid = getpid();
  65.  
  66.     //send ready signal
  67.     printf("Player (%d): sending ready command\n", pid);
  68.     err = kill(ppid, SIGUSR1);
  69.  
  70.     //error on kill
  71.     if (err == -1)
  72.     {
  73.         printf ("PSIG1: Kill error: %d\n", errno);
  74.         exit (4);
  75.     }
  76.    
  77.     //flag for game to be played based on # of games
  78.     //player picks pick and is sent through pipe
  79.     //repeats until # of games have been reached
  80.     while(flag)
  81.     {
  82.         pick = rand()%3;
  83.         sprintf(outBuff, "%d", pick);
  84.         write(OUT, outBuff, strlen(outBuff) + 1);
  85.         printf("Player (%d): ", pid);
  86.         pause();
  87.     }
  88.  
  89.     //player tells controller its terminating
  90.     sleep(1);
  91.     printf("Player (%d): terminating.\n", pid);
  92.  
  93.     return 0;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement