20140619 목요일 네트워크
02 프로세스 종료하기 (P.572)
exit 함수
atexit 함수( 574)
P.576
stack 구조 First In last out 이라고도 한다.엘리베이터가 한 줄로 줄 서서 타는 거라고 생각하자 1번부터 10번까지 타고 10번부터 내린다고 생각하면 된다 이런 구조가 스텍 구조임.먼저들어간 사람이 먼저나오는 것을 QUEUR 구조 다른 말로는 First In First Out 이여서 FIFO 이라고 한다.
운영체제에서 덤프가 파일을 뜻함 코어덤프 !!
Cygnus -> linux 와 비슷한 것 나중에 ARM 할 때 씀
인자를 두 개 받기 때문에 실행을 할 때 숫자를 같인 입력을 해줘 야함
비정상적으로 종료될 때는 atexit을 실행시키지 못함 이것은 정상적인 종료일 때만 실행이 된다.
프로그램을 비상적으로 종료시키는 atexit 함수는 C언어 함수가 아니다 !! 리눅스나 유닉스에서만 가능한 함수 이다. C는 임베디드 말고는 모든 함수가 프로그램이 똑같이 된다.
03 프로세스 종료를 기다림
577.Wait 함수 -> 자식 프로세스가 종료될 때까지 아무 일도 하지 않고 기다리는 함수 총 16bit 특정한 애를 기다릴 때! 왜쓰냐면 프로그램을 두 개를 띄웠는데 자식이 부모의 프로그램을 받아쓰고 있는데 부모가 종료를 해버리면 자식이 오류가 나니깐 그것을 막기 위해서 자식 프로세스가 종료될 때까지 기다리다가 자식프로세스의 프로세스 ID와 종료될 때의 상태 정보를 출력하는 프로그램이다. 실행화면의 16진수 300을 2진수로 표현하면 00000011 00000000 이다. 우측 8bit 는 0이고 좌측 8비트는 3이므로 자식 프로세스는 3을 반환하고 정상적으로 종료되었음을 알 수 있다.
P.578 23_8.c
Void (*f)(void) 라는 함수포인터가 있는데 이 함수 포인터를 test 라는 함수 안에 호출을 하고 return 값을 f(그 함수)로 줬을 때 test 의 반환값을 어떻게 주느냐의 문제 !!
int
printf(const char *, ...);
int
(*printf)(const char *, ...) ; //
와
위에
것은
같은
것
A = printf ; //
이것은
printf
가
int
형인데
=
으로
되어있으니깐
A
도
int
형이
됨
A = smart(printf); //
일
때
smart
도
int
형이라는
것이
된다
//
그럼
이
때
smart
의
원형은
??
int
(*smart)(printf) (
인자
); //
라고
하면
안되고
int
(*smart (int(*printf)(const char *
, ...) ) ) (
인자
); //
이렇게
되어야
함
인자는 (const char *,...) 가 되어야함
Waitpid 함수 (579) wait은 여러 자식 프로세스 중 하나라도 종료되면 wait이 풀려버림 만약3번이 종료할 때까지 기다리고 싶으면 3번의 번호를 알고 있어서 그것으로 하면 3번이 종료할 때까지는 기다린다
23_9.c
종료되는 순서는 랜덤 이다.
04 프로세스 대체하기
P.591 23_14.c
리눅스는 현재디렉토리 기반으로 실행 되지 않는다. 쳤다가 없으면 현재디렉토리에서 실행 되는 것. 그래서 ./ 를 붙인다 ./ 가 현재디렉토리에서 실행시키라는 것이다. Main 이나 test 로 하면 다른 곳에서 찾아서 이상한 것이 실행 된다. Linux나 unix는 path를 우선으로 찾는다.
598 p 소스
23_21.C
4번에 extern 환경변수를 가르키는 것 linux에서 만들어 놓은 것.
포인터에 포인터를 가르키는 투 포인터
8번라인이 환경 변수 즉,. 문자열
문자열을 가르키려면 char * 해 놨음 즉, 포인터 배열
while 문의 조건 (*env) 는 0이냐 아니냐 0이면 종료 !! 즉, NULL
제일 끝에 null이 들어 간 것을 찾는 것이다.
즉 (0 != *env) 이렇게 된다 가리키는 곳이 null인지 아닌지
12번 라인에 env 를 ++ 시키고 있다는 것은 다음 것을 별한개 *을 붙여서 문자열의 주소를 말한것 그냥 env는 포인터를 가리킨 것 . 특정한 경로가 있는 지를 검사해야 할 때 !! path라는 문자열을 찾아
'코스웨어 > 14년 스마트컨트롤러' 카테고리의 다른 글
20140625손병규_수업정리(출석번호 14번) (8) | 2014.06.25 |
---|---|
21040624서상우수업보고서 (14) | 2014.06.24 |
20140623 박영주 일일보고서 (12) | 2014.06.23 |
20140620 일일업무보고서 11번 문대영 (14) | 2014.06.20 |
USB3.0 32기가 공구 진행합니다~ (6) | 2014.06.19 |
2014년 06월 18일 출석번호 9번 김해성 일일업무일지 (12) | 2014.06.18 |
20140617 업무보고 김진철 출석번호 8번 (13) | 2014.06.18 |
20140616 업무보고 김재성 출석번호 7번 (14) | 2014.06.17 |