#include<stdio.h> #include<dirent.h> #include<string.h> typedef struct pro_info { int pid; int ppid; char name[100]; int flag;//标志是否打印 int rec;//计算总父进程个数 }info; //返回所有数字目录 int filter(const struct dirent *dir){ //select number folder int i; int n = strlen(dir->d_name); for(i = 0;i<n;i++) { if(!isdigit(dir->d_name[i]))//返回所有数字目录 return 0; else return 1; } } //得到pid int my_getpid(char * str) { int length=strlen(str); char num[10]; int i,j,ret; if(strncmp(str,"Pid",3)==0) { for(i=0;i<length;i++) { if(str[i]>='0'&&str[i]<='9') break; }//获得str[i]中第一个数字位的i值 for(j=0;j<length-1;j++) num[j]=str[i+j];//讲数字位复制于num ret=atoi(num);//atoi函数讲string类型转换为int类型 } else ret=-1;//由于init的父进程为0 为了避免重复 我们返