텍스트파일안에 있는 문자열을 저장하고 싶어요.
<첫번째 질문>
리눅스 /proc/[PID]/stat 텍스트파일 내에는
1 (init) S 0 1 1 0 -1 4194560 1597 347511 89 1336 0 428 7109 3736 20 0 1 0 5 2056192 134
4294967295 134512640 134636520 3218157984 3218157132 1115158 0 0 4096 671835171 0 0 0 0 0 0 0 461 0 0
이런식으로 숫자가 적혀있습니다. 위 파일은 init 프로세스의 정보이고, 리눅스 /proc/1/stat 안의 내용입니다.
stat 파일안에 있는 저 내용들은 공백 " " 을 기준으로 구분되어있습니다.
공백을 기준으로 각각을 저장해서 원하는부분을 출력하고 싶습니다.
어찌해야할까요?
-------------------------------------------------------------
<두번째 질문>
리눅스에 /proc이라는 디렉토리 안에는 숫자로된 디렉토리가 굉장히 많습니다.
숫자로된 디렉토리는 현재시스템에서 수행되고 있는 프로세스의 디렉토리입니다.
디렉토리명은 PID이며, 이 디렉토리의 개수는 가변적입니다.
또 디렉토리 안에는 stat 이라는 파일이 모두 있습니다.
만약 50개의 프로세스가 수행되고 있다면, 50개의 디렉토리가 있구요. 30개의 프로세스가 수행중이라면 30개의 디렉토리가 있겠지요?
이처럼 프로세스의 개수는 정해지지 않았고, 각 디렉토리 안에는 stat 이라는 파일이 모두 있습니다.
이 stat 이라는 파일안에는 첫번째 질문에서 언급했듯이 프로세스 상태정보가 공백을 기준으로 적혀있습니다.
저는 이 많은 디렉토리 안에 있는 stat을 모두 읽어서, 보기좋게 정렬해서 출력해보려고 합니다.
그런데 stat 이 들어있는 프로세스 디렉토리는 개수가 가변적이라, 배열로 선언하게 되면 메모리를 많이 낭비하게 될듯합니다.
자칫 메모리가 부족할수도 있을것 같구요.
그래서 생각한게 링크드리스트인데, 구조체를 이용하는것 같더라구요.
그런데 아무리 읽어도 이해가 가질않네요.
그 많은 디렉토리 내부의 stat을 읽어서 저장한후에, 원하는 부분을 딱딱 집어서 출력하려면
대체 어떻게 저장을 해야할까요?ㅠㅠㅠㅠ
답변 부탁드립니다.
좋은 주말보내세요!
sscanf(line, "%d %d %d
sscanf(line, "%d %d %d %d..........", &a, &b, &c.....);
or
regex.h
두번째 질문은 ... 이해를 하는 수 밖엔..-_-;
------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.
댓글 달기