컴퓨터 기초81 [유닉스 프로그래밍] 파일관련 연습문제 *참고글 1.에러및 low 레벨 파일다루기 2.라이브러리를 이용한 파일다루기 1.저수준 파일 입출력을 이용해 mycat 프로그램을 작성하라. 출력 시 행 번호를 붙여서 출력한다. 파일명은 명령행 인자로 받는다. 예) ./mycat han.c 2.저수준 파일 입출력을 이용해 파일을 복사하는 프로그램을 작성하라. 파일명은 명령행 인자로 받는다. 예) ./mycp han.c bit.c (han.c 를 bit.c로 복사) 3.lseek 함수를 사용해 데이터 파일을 읽고 아래 출력 형태와 같이 출력하는 프로그램을 작성하라. *데이터 파일내용 : abcdefg…..yz *출력내용 : acegik…uwy 4.연습문제 3번을 fread 와 write 함수를 사용해 동일한 결과를 출력하도록 작성하라. 5.고수준 파일 입.. 2020. 7. 14. 15.프로세스와 하드웨어 컴퓨터의 구조 *메모리 : 메모리는 0 또는 1의 열을 저장할 수 있는 장치다. 보통 8비트를 1바이트로 통합하므로 바이트 열을 저장한다고 할 수 있다. 바이트열은 프로그래머가 작성한 코드가 최종적으로 변환된 형태에 해당한다. *cpu : cpu는 내부에 레지스터 라는 작은 장치가 있다. cpu는 메모리부터 레지스터에 데이터를 복사하여 연산을 수행후, 다시 메모리에 되돌려서 메모리의 값을 바꾼다. *hdd : hdd 나 ssd는 메모리처럼 바이트 열을 저장하는 장치지만, 메모리와 비교해서 조금 다르다. 1.일정한 바이트 단위로만 데이터를 주고 받을 수 있다. 2.일반적으로 용량이 메모리 보다 크다. 3.속도가 메모리 보다 느리다. 4.전원이 꺼져도 데이터는 보관 된다. *키보드,마우스 : 키보드나 마우스.. 2020. 7. 12. 14.파일 시스템 관련 api 디렉토리 내용 읽어들이기 #.개요 디렉터리를 읽으면 디렉터리에 담긴 파일들의 정보를 얻을 수 있다. 파일 한개당 하나의 구조체에 대응되어, 디렉터리를 읽으면, 구조체의 배열을 얻을 수 있다. 즉, 디렉터리는 바이트 배열임과 동시에 구조체의 배열인 것이다. 이 구조체를 디렉터리 엔트리라고 한다. #.디렉토리 열기 설명 : name 으로 지정한 디렉터리를 읽기 위해 open 하고 DIR 타입에 대한 포인터를 반환한다. DIR 타입은 디렉터리를 읽어 들이기 위한 스트림을 관리하는 구조체로 파일을 읽을때 사용한 FILE 타입에 대응하는 개념이다. 헤더 : dirent.h 형태 : DIR *opendir(const char *name); 인수 : char *name (열기 대상 디렉토리) 반환 : DIR 열기에 .. 2020. 7. 11. 13.grep 명령어 실습 #.데이터 검색과 가공, 처리 1.regcomp : regcomp을 통하여 정규식(특정한 규칙을 갖는 문자열)을 정의. regcomp() 함수가 성공하면, 0을 리턴합니다. 그렇지 않으면 regerror() 함수에 대한 호출에서 사용할 수 있는 오류 코드를 리턴하며 preg의 컨텐츠가 정의되지 않습니다. 2.regexec : regexec를 통하여 입력된 값이 정규식에 포함되었는지를 확인하고 매칭 정보를 리턴. regexec() 함수는 컴파일된 정규식 preg에 대해 널로 끝나는 string을 비교하여 두 사이의 일치 항목을 찾습니다. 일치 항목을 찾으면 regexec() 함수는 0을 리턴합니다. 일치 항목을 찾지 못하면 regexec() 함수는 REG_NOMATCH를 리턴합니다. 그렇지 않으면 오류를 .. 2020. 7. 4. 12.head 명령어 실습 #.head 명령어 실습 1 *처리 대상은 표준 입력으로만한다. 즉, 실행인자로 파일 이름을 받는 기능은 생략한다. *출력할 줄의 수는 첫 번째 실행 인자로 전달 받는다. 예제 결과 #.head 명령어 실습 2 *파일의 경로를 실행 인자로 받아들이는 기능을 구현 *첫번째 인자는 이전처럼 출력할 라인 수, 두번째 이후 인자를 파일이름으로 간주한다. 예제 결과 #.head 명령어 실습 2 -2 *파일의 경로를 실행 인자로 받아들이는 기능을 구현 *첫번째 인자는 이전처럼 출력할 라인 수, 두번째 이후 인자를 파일이름으로 간주한다. 예제2-2 #.head 명령어 실습 3 *위에서 작성중인 head 명령어 소스에 getopt_long()을 사용해서 *옵션을 처리하는 기능을 추가하는 기능. 예제 결과 #.head .. 2020. 7. 4. [운영체제 실습] 11.시그널 시그널의 개념 : 시그널은 프로세스에게 뭔가 발생했음을 알리는 간단한 메시지를 비동기적으로 보내는 것이다. 1 시그널의 발생 : 시그널은 소프트웨어 인터럽트다. 시그널은 비동기적으로 발생하며, 유닉스 운영체제가 프로세스에 전달한다. 예) *0으로 나누기처럼 프로그램에서 예외 상황이 일어나는 경우 *사용자가 ctrl + c 같은 인터럽트를 입력한 경우 *프로세스가 kill 함수와 같이 시그널을 보낼 수 있는 함수를 사용해 다른 프로세스에 시그널을 보내는 경우 2.시그널 처리방법 *프로세스가 받은 시그널에 따라 기본 동작을 수행한다. 각 시그널에는 기본 동작이 지정되어 있다. 대부분 시그널의 기본 동작은 프로세스를 종료하는 것이다. *프로세스가 받은 시그널을 무시한다. 프로세스가 시그널을 무시하기로 지정하면.. 2020. 7. 3. [운영체제 실습] 10.프로세스 생성과 실행 #.프로세스 생성 - system 함수 사용하기 예제 결과 #.fork 함수 특징 1.fork 함수를 호출하면, 2. 새로운 프로세스를 생성한다. 3. fork 함수로 생성한 자식 프로세스의 메모리 공간은 부모 프로세스의 메모리 공간을 그대로 복사해 만든다. 4.fork 함수는 부모 프로세스에는 자식 프로세스 pid를 리턴하고, 자식 프로세스에는 0을 리턴한다. #.자식프로세스가 상속 받는 대표적인 속성 1.실제 사용자 id 2.유효 사용자 id 3.실제그룹 id 4.유효 그룹 id 5.환경변수 6.열린 파일 기술자 7.시그널 처리 설정 8.현재 작업 디렉토리 #.프로세스 생성 - fork 함수 사용하기 예제 결과 #.프로세스 종료 유닉스는 프로세스가 종료되면 해당 프로세스가 어떻게 종료되었는지를 나타내.. 2020. 6. 28. [운영체제 실습] 9.프로세스 #.pid 검색 - getpid, getppid 함수 사용하기 예제 결과 #.getpgrp, getpgid 함수 사용하기 예제 결과 #.getsid 함수 사용하기 예제 결과 #.environ 전역변수 사용하기 예제 결과 #.main 함수 인자 사용하기 예제 결과 #.getenv 함수 사용하기 예제 결과 #.putenv 함수 사용하기 예제 #.setenv 함수 사용하기 예제 예제파일 참고 : 유닉스시스템 프로그래밍(한빛미디어) 2020. 6. 28. [운영체제 실습] 8.시스템 정보 다루기 - (그룹, 시간) #.그룹정보검색 - getgid, getegid 함수 사용하기 예제 결과 참고 : 유닉스에서는 그룹에 관한 정보를 /etc/group 파일에 별도로 저장한다. 사용자가 속한 그룹 중 /etc/passwd 파일의 GID 항목에 지정된 그룹이 기본 그룹이며, 2차 그룹은 /etc/group 파일에서 지정한다. #.그룹 파일 검색 - getgrnam 함수 사용하기 예제 결과 #./etc/group 파일을 순차적으로 읽기 예제 결과 #.로그인 기록 검색 who 명령으로 현재 시스템에 로그인하고 있는 사용자에 관한 정보를 검색할 수 있다. last 명령으로는 시스템의 부팅 시각 정보나 사용자 로그인 기록 등을 검색할 수 있다. 이러한 정보는 /var/adm/wtmpx 파일에 저장된다. 이 파일은 바이너리 형태로 .. 2020. 6. 27. 이전 1 ··· 4 5 6 7 8 9 다음