ps 프로그램 공부중 인데 무슨 뜻인지 이해가 안됩니다. 주석처리좀 부탁드립니다.

storm0022의 이미지

#include "stdio.h"
#include "stdlib.h"
#include "string.h" /* <> 이 문자가 안써져서 "" 문자로 남겼습니다.*/
#include "sys/types.h"
#include "sys/stat.h"
#include "unistd.h"
#include "fcntl.h"
#include "dirent.h"
#include "ctype.h"

static int MZ_ps_LoadFile(char *s_FileName, void **s_Buffer)
{
int s_Return = (-1), s_Handle, s_Length;
*(s_Buffer) = (void *)0;
s_Handle = open(s_FileName, O_RDONLY);
if(s_Handle >= 0)
{
s_Length = 32 << 10;
*(s_Buffer) = (void *)malloc(s_Length);
if(*(s_Buffer))s_Return = read(s_Handle, *(s_Buffer), s_Length);
else fprintf(stderr, "Not enough memory !!!\n");
close(s_Handle);
}
else fprintf(stderr, "Can not open file \"%s\" !!!\n", s_FileName);
return(s_Return);
}

static void MZ_ps(void)
{
char *s_ProcDirectory = "/proc";
DIR *s_Directory;
struct dirent *s_DirectoryEntry;
char s_TempPath[32];
s_Directory = opendir(s_ProcDirectory);
if(s_Directory)
{
fprintf(stdout, "%5s %5s %5s %5s %s\n", "PPID", "PID", "UID", "State", "Name");
do
{
s_DirectoryEntry = readdir(s_Directory);
if(s_DirectoryEntry)
{
void *s_Buffer, *s_Ptr;
int s_Length;
char s_Name[16];
int s_State, s_PID, s_PPID, s_UID;
if(isdigit(*((char *)(s_DirectoryEntry->d_name))) == 0)continue;
s_Name[0] = s_Name[15] = '\0';
s_State = '?';
s_PID = (-1);
s_PPID = (-1);
s_UID = (-1);
sprintf(&s_TempPath[0], "%s/%s/status", s_ProcDirectory, (char *)s_DirectoryEntry->d_name);
s_Length = MZ_ps_LoadFile(&s_TempPath[0], &s_Buffer);
if(s_Length > 0 && s_Buffer)
{
s_Ptr = strstr(s_Buffer, "Name:");
if(s_Ptr)sscanf(s_Ptr, "Name:\t%15s", &s_Name[0]);
s_Ptr = strstr(s_Buffer, "State:");
if(s_Ptr)sscanf(s_Ptr, "State:\t%c", (char *)&s_State);
s_Ptr = strstr(s_Buffer, "Pid:");
if(s_Ptr)sscanf(s_Ptr, "Pid:\t%d", &s_PID);
s_Ptr = strstr(s_Buffer, "PPid:");
if(s_Ptr)sscanf(s_Ptr, "PPid:\t%d", &s_PPID);
s_Ptr = strstr(s_Buffer, "Uid:");
if(s_Ptr)sscanf(s_Ptr, "Uid:\t%d", &s_UID);
free(s_Buffer);
}
sprintf(&s_TempPath[0], "%s/%s/cmdline", s_ProcDirectory, (char *)s_DirectoryEntry->d_name);
s_Length = MZ_ps_LoadFile(&s_TempPath[0], &s_Buffer);
if(s_Length > 0 && s_Buffer)
{
fprintf(stdout, "%5d %5d %5d %c %s\n", s_PPID, s_PID, s_UID, s_State, s_Name);
free(s_Buffer);
}
}
}while(s_DirectoryEntry);
closedir(s_Directory);
}
else fprintf(stderr, "Can not open directory \"/proc\"\n");
}

int main(int s_Argc, char **s_Argv)
{
fprintf(stdout, "MZ_ps v1.0.0 - Copyright(c)InfoEQ co.,LTD - %s %s\n", __DATE__, __TIME__);
fprintf(stdout, "Code by JaeHyuk Cho - \n\n");
MZ_ps();
return(0);

select99의 이미지

일단 코드를...
code 테크를 써서 보기좋게 올리심이..

kslee80의 이미지

그냥 코드 쭉 올려놓고 이해 못하겠다고 하는건...

"수학 좀 알려주세요. 아무것도 모르거든요... 모르는게 뭔지도 몰라요..."
라고 하는 것과 같군요. -_-;;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.