Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "proto.h"
- #include <sys/types.h>
- #include <stdlib.h>
- /*
- mproc[NR_PROCS]
- char mp_exitstatus - status procesu ktory istnieje
- char mp_sigstatus - status # dla zabitych procesow
- pid_t mp_pid - id procesu
- uid_t mp_realuid - uid procesu
- int mp_parent - id rodzica
- */
- bool acompare(mproc lhs, mproc rhs) { return lhs.mp_pid < rhs.mp_pid; }
- int pstree(pid_t pid, int uid);
- int pstree2(pid_t pid, int uid, int depth);
- int pstree(pid_t pid, int uid){
- qsort(mproc, mproc+NR_PROCS, acompare);
- int i = 0;
- for (i = 0; i < NR_PROCS; ++i){
- if (mproc[i].mp_pid == pid) break;
- }
- pstree2(pid,uid,0,i);
- }
- int pstree2(pid_t pid, int uid, int depth, int index){
- if ((int)mproc[index].mp_realuid != uid) return 0;
- if (mproc[pid].mp_flags & IN_USE != IN_USE) return 0;
- for (int i = 0; i < depth*3; ++i){
- printf("-");
- }
- printf("%jd\n", (intmax_t) pid);
- for (int i = index + 1; i < NR_PROCS; ++i){
- if (mproc[i].mp_parent == (int) pid){
- pstree2(i, uid, depth+1, i);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement