Mhwan's Develope/C Languge
-
[Develop] Unix Shell 기능 구현Mhwan's Develope/C Languge 2020. 1. 2. 23:57
##기능 - Unix Shell의 각종 기능을 구현 - 순차실행, 후면(background)실행, 입력 재지정, 출력재지정, 입출력 동시 재지정(redirection), 파이프 (pipe) ##간단 설명 및 알고리즘 - 먼저 입력한 명령어를 적절히 파싱 - 일반 실행 : argv에 파싱된 명령어를 넣고 일반적인 실행일 경우 자식프로세스가 execvp를 실행시키는 동안 부모 프로세스는 자식이 끝날때까지 기다림(wait) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 void executesLine(int isbg, char *argv[]){ int status, pid; if ((pid=fork()) == -1) perror("fork failed"); else if (pid != ..
-
[Develop] Unix내 파일 및 디렉토리 내의 모든 크기 알아오기Mhwan's Develope/C Languge 2020. 1. 2. 23:05
## 기능 - Unix의 명령어 중 du -h와 같은 결과가 나옴 - 프로그램 실행시 매개변수로 폴더이름 및 파일이름을 넣어 실행하면 파일이면 파일의 크기를 출력, 폴더면 폴더 안에 있는 폴더를 하나하나 탐색하며 각 폴더 별 용량을 구해서 보여주고 총 용량을 보여줌 ## 간단 설명 및 알고리즘 - 유닉스는 디렉토리를 열면 readDir을 통해 dit 구조체에 디렉토리의 정보를 저장, 디렉토리 내 파일 등의 정보를 각각의 inode에 저장하므로 lstat함수를 통해 심볼링 링크를 사용해 접근하고 st.st_size로 inode에 있는 크기를 알아옴 - 디렉토리 내의 파일이면 위 방법으로 파일 크기를 누적하고, 디렉토리면 재귀함수로 해당 디렉토리를 탐색 후 해당 디렉토리의 전체크기를 반환 후 자신을 호출한 ..