#include #include #include #include #include #include #include #include void blink1(int *arr, int i); void blink2 (int *arr, int i); pid_t k1, k2; int main(){ int i=0; wiringPiSetup(); int status[3]={0,2,3}; for (int m=0; m<3;m++){ pinMode(status[m], OUTPUT); } if(fork() ==0){ if (fork() == 0){ k2 = getpid(); printf("Kind 2: %d\n", getpid()); blink2(status, i); } else { k1 = getpid(); printf("Kind 1: %d\n", getpid()); blink1(status, i); } }else{ printf("Eltern: %d\n", getpid()); for (int j = 0; j<3;j++){ sleep(4); system("ps -o pid,ppid,state,time,command"); } wait(&k1); kill(k2, SIGKILL); for (int m=0;m<3;m++){ pinMode(status[m], 0); } } return 0; } void blink1(int *arr,int i){ for(int m = 0; m<5;m++) { digitalWrite(arr[i%3],1); sleep(1); digitalWrite(arr[i%3],0); sleep(1); } exit(0); } void blink2(int *arr,int i){ while(1){ digitalWrite(arr[i%3],1); sleep(1); digitalWrite(arr[i%3],0); sleep(1); i++; } }