본문 바로가기

Computer Science/UNIX & Linux31

[UNIX/Linux] ep6+) 프로세스 정보 함수 실습 ex1. 명령행 인자로 PID를 입력받아 해당 프로세스가 속한 프로세스 그룹 ID(PGID)를 출력하는 프로그램을 작성하시오. 명령행 인자로 지정된 PID가 0이면 현재 프로세스를 대상으로 PPID와 PGID를 구한다#include #include #include int main(int argc, char* argv[]) { if (argc == 1) { printf("Input pid.\n"); exit(1); } int pid; pid = atoi(argv[1]); if (pid == 0) { pid = getpid(); printf("PPID : %d\n", getppid()); } printf("PID : %d.. 2024. 10. 14.
[UNIX/Linux] ep6) 프로세스 정보 ㅁ디렉터리 트리의 산책ㅇ ftw (test1.c): 주어진 디렉터리부터 출발하여 그 디렉터리 아래에 있는 모든 파일과 부 디렉터리에 대한 작업을 수행• int ftw(const char* path, int(*func)(), int depth) • int func(const char* name, const struct stat* sptr, int type)- FTW_F : 객체가 하나의 파일임- FTW_D : 객체가 하나의 디렉토리임- FTW_DNR : 객체가 읽을 수 없는 하나의 디렉터리임- FTW_SL : 객체가 하나의 심볼형 링크임- FTW_NS : 객체가 심볼형 링크가 아니며, 따라서 stat 루틴이 성공적으로 수행될 수 없는 객체임 • 트리의 산책이 종료되는 경우- leaf에 도달- ftw에서 오.. 2024. 10. 12.
[UNIX/Linux] ep5) 시스템 정보 ㅁ시스템 정보 검색: 기본 환경과 관련된 구조체나 상수를 사용해 정보를 검색하드웨어와 운영체제의 종류 정보, 메모리 페이지의 크기나 최대 패스워드 길이와 같은 시스템 환경 설정 정보 등 [시스템 정보 검색 함수]• uname() 함수: 설치된 운영 체제 정보와 같은 시스템 기본 정보를 검색할 수 있음• sysconf() 함수: 시스템 자원 정보를 검색할 수 있음 (conf: configuration)• fpathconf() 함수와 pathconf() 함수: 파일과 디렉터리 자원 정보를 검색할 수 있음  uname 명령: 운영체제 기본 정보 검색• 시스템에 설치된 운영체제의 이름과 버전, 호스트명, 하드웨어 종류 등을 검색하려면 uname 명령을 사용• uname 명령에 -a 옵션을 지정하면 현재 시스템에.. 2024. 10. 10.
[UNIX/Linux] ep4+) 고수준 파일 입출력 함수 실습 ex1. 고수준 입출력함수를 사용하여 5개의 스트링을 받아들여 파일에 저장한 후, 화면으로 스트링 번호를 입력하면 파일에서 해당 스트링을 읽어 화면에 출력하는 부분을 for문을 사용하여 작성하라data file(testdata) : aaabbbcccdddeee $ ./test1aaa3ccc4ddd#include #include #include #include #define NSTRINGS 5#define STRSIZE 3char* strings[] = {"aaa", "bbb", "ccc", "ddd", "eee"};int main(int argc, char* argv[]) { int i, n; FILE* fp; char buf[STRSIZE], template[32]; if ((fp.. 2024. 10. 7.
[UNIX/Linux] ep4) 고수준 파일 입출력 https://claremont.tistory.com/entry/UNIXLinux-ep3-%EC%A0%80%EC%88%98%EC%A4%80-%ED%8C%8C%EC%9D%BC-%EC%9E%85%EC%B6%9C%EB%A0%A5 [UNIX/Linux] ep3) 저수준 파일 입출력ㅁ파일(file): 관련 있는 데이터의 집합으로, 저장 장치에 일정한 형태로 저장데이터를 저장하는 데는 물론 데이터를 전송하거나 장치에 접근하는 데도 사용특수 파일의 생성과 삭제 및 입출력은claremont.tistory.comhttps://claremont.tistory.com/entry/UNIXLinux-ep3-%EC%A0%80%EC%88%98%EC%A4%80-%ED%8C%8C%EC%9D%BC-%EC%9E%85%EC%B6%9C%EB.. 2024. 10. 7.
[UNIX/Linux] ep3+) 저수준 파일 입출력 함수 실습 ex1. 저수준 파일 입출력을 이용해 파일을 복사하는 프로그램을 작성하시오. 이때 파일명은 명령행 인자로 받는다../ex test.txt test.bak#include #include #include #include int main(int argc, char* argv[]) { if (argc != 3) { printf("Usage: ex1 src target\n"); exit(1); } int rfd, wfd, n; char buf[256]; rfd = open(argv[1], O_RDONLY); if (rfd == -1) { perror("Open "); exit(1); } wfd = open(argv[2].. 2024. 10. 2.
[UNIX/Linux] ep3) 저수준 파일 입출력 ㅁ파일(file): 관련 있는 데이터의 집합으로, 저장 장치에 일정한 형태로 저장데이터를 저장하는 데는 물론 데이터를 전송하거나 장치에 접근하는 데도 사용특수 파일의 생성과 삭제 및 입출력은 특수 파일별로 약간씩 차이가 있다  ㅁ저수준 파일 입출력: 시스템 호출(System Call)• 리눅스 커널의 시스템 호출을 이용해 파일 입출력을 수행• 시스템 호출을 이용하므로 파일에 좀 더 빠르게 접근할 수 있는 장점• 또한 바이트 단위로 파일의 내용을 다루므로 일반 파일뿐만 아니라 특수 파일도 읽고 쓸 수 있음• 바이트 단위로만 입출력을 수행 가능하므로 응용 프로그램 작성 시 다른 추가기능을 함수로 추가 구현 해야 함• 열린 파일을 참조할 때 파일 기술자(fd) 사용  ㅁ고수준 파일 입출력: C언어 표준 함수•.. 2024. 9. 30.
[UNIX/Linux] ep2+) 파일 함수 실습 ex1. 명령행 인자로 받은 파일의 크기를 알려주는 프로그램을 작성하시오#include #include #include #include #include int main(int argc, char* argv[]) { if (argc == 1) { printf("usage: ex1 filename\n"); exit(1); } struct stat statbuf; stat(argv[1], &statbuf); printf("SIZE = %d\n", (int)statbuf.st_size); return 0;}   ex2. 명령행 인자로 받은 파일의 종류를 출력하는 프로그램을 작성하시오#include #include #include #include #.. 2024. 9. 26.
[UNIX/Linux] ep2) 파일 다루기 ". 과 .. 은 모든 디렉터리에 항상 존재하는 파일 이름이며, 디렉터리가 생성될 때 자동적으로 포함된다" ㅁ디렉터리 허가- 읽기(r): 디렉터리 내의 파일이나 부디렉터리의 이름을 리스트- 쓰기(w): 디렉터리 내의 파일을 제거하거나 새로운 파일을 생성- 실행(x): cd 혹은 chdir 로 디렉터리 내부로 들어갈 수 있음  (리눅스 파일 함수)  [파일 정보 검색 함수] - inode 정보 검색stat() 함수로 검색한 inode 정보는 stat 구조체에 저장되어 리턴된다stat 구조체의 세부 구조는 man -s 2 stat 으로 확인할 수 있다 (stat은 status의 약자이다)struct stat { dev_t st_dev; // 파일이 저장되어 있는 장치의 번호를 저장 ino_t st.. 2024. 9. 24.