#include <stdio.h> #include <fcntl.h> #include <unistd.h>
int main(int iArg, char *cpaArg[]) {
FILE *stpFD; char *cpRet; char *cpSGroup; char caBuff[1024]; char *cpGID = 0; char *cpGName = 0; char *cpUserlist = 0;
/* /etc/group은 사용자들이 속한 그룹을 규정하는 ASCII 파일이고 한 줄에 한명씩 각 줄마다 group_name : passwd : GID : user_list 형식을 가지고 있음 */
if(2 != iArg) { printf(" group_test groupname 형식으로 입력하시오!\n"); return 0; } cpSGroup = cpaArg[1]; stpFD = fopen("/etc/group","r" ); if( 0 == stpFD) { printf("fopen error!!\n"); return 100; }
while(1) {
cpRet = fgets(caBuff, sizeof(caBuff), stpFD);// 파일에서 한줄 읽어 와서 버퍼에 넣음 if( 0 == cpRet) { printf("파일끝에 도달!!\n"); printf("일치하는 그룹네임을 찾지 못했습니다.\n"); return 0; //cpGName = 0; } if( 0 == strncmp(cpSGroup, caBuff, strlen(cpSGroup)) ) // 찾으려는 그룹네임과 일치하면 탈출 { break; }
}
cpGName = caBuff;//Group Name for(cpRet = caBuff; *cpRet != '\n'; ++cpRet) { if(':' == *cpRet) { *cpRet = 0; } } *cpRet = 0;// 개행문자 제거 cpGID = cpGName+strlen(cpGName)+3; // GID cpUserlist = cpGID+strlen(cpGID)+1; // User List printf("Group Name : %s\n", cpGName);//Group Name 출력 printf("GID : %s\n", cpGID); //GID 출력 printf("User List : %s\n", cpUserlist); //user list 출력
fclose(stpFD);
return 0;
}
|