// Многозадачное программирование в Linux // Программа из учебника "Системное программирование в среде Linux", Гунько А.В., стр. 64, 67 // Название: prior // Описание: управление приоритетами процессов, // уничтожение порожденных процессов #include #include #include #include #include #include #include #include int process( int i) { int pid; pid=getpid(); setpriority(PRIO_PROCESS, getpid(),i); printf("Process %d ThreadID: %d working with priority %d\n",i, pid,getpriority(PRIO_PROCESS,getpid())); sleep(5);//-i); exit(getpriority(PRIO_PROCESS,getpid())); } int main(void) { int i, pid[5], res,status; for (i = 0; i< 5; i++) { pid[i] = fork(); if (pid[i] == 0) { pid[i]=process(i); exit(0); } } sleep(5); for (i = 0; i< 5; i++) { res=waitpid(pid[i],&status,0); //res=waitpid(pid[i],&status,WNOHANG); //res=waitpid(pid[i],&status,WUNTRACED); printf("waitpid=%d ",res); //if (pid[i] != res) {kill(pid[i],SIGKILL); printf("Thread #%d killed!\n",pid[i]);} printf("WIFEXITED=%d ",WIFEXITED(status)); printf("ThreadID: %d finished with status %d\n", pid[i], WEXITSTATUS(status)); } return 0; }