Facebook
From Bistre Human, 1 Year ago, written in C.
This paste is a reply to A1,global from Reliable Peccary - view diff
Embed
Download Paste or View Raw
Hits: 182
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <wiringPi.h>
  4. #include <unistd.h>
  5. #include <sys/utsname.h>
  6. #include <signal.h>
  7. #include <sys/wait.h>
  8. #include <sys/types.h>
  9.  
  10.  
  11. int i=0;
  12. void blink1(int *arr);
  13. void blink2 (int *arr);
  14. pid_t k1, k2;
  15.  
  16. int main(){
  17.    wiringPiSetup();
  18.     int status[3]={0,2,3};
  19.  
  20.     for (int m=0; m<3;m++){
  21.        pinMode(status[m],OUTPUT);
  22.     }
  23.     if(fork() ==0){
  24.         if (fork() == 0){
  25.             k2 = getpid();
  26.             printf("Kind 2: %d\n", getpid());
  27.             blink2(status);
  28.         } else {
  29.             k1 = getpid();
  30.             printf("Kind 1: %d\n", getpid());
  31.             blink1(status);
  32.         }
  33.     }else{
  34.         printf("Eltern: %d\n", getpid());
  35.  
  36.  
  37.         for (int j = 0; j<3;j++){
  38.             sleep(4);
  39.             system("ps -o pid,ppid,state,time,command");
  40.         }
  41.         wait(&k1);
  42.         kill(k2, SIGKILL);
  43.  
  44.         for (int m=0;m<3;m++){
  45.             pinMode(status[m], 0);
  46.  
  47.         }
  48.     }
  49.  
  50.     return 0;
  51. }
  52.  
  53.  
  54. void blink1(int *arr){
  55.      for(int m = 0; m<5;m++) {
  56.         digitalWrite(arr[i%3],1);
  57.        system("gpio write 0 1");
  58.         sleep(1);
  59.         digitalWrite(arr[i%3],0);
  60.         sleep(1);
  61.     }
  62.  
  63.     exit(0);
  64. }
  65.  
  66. void blink2(int *arr){
  67.  
  68.     while(1){
  69.         digitalWrite(arr[i%3],1);
  70.         sleep(1);
  71.         digitalWrite(arr[i%3],0);
  72.         sleep(1);
  73.         i++;
  74.     }
  75. }