Network Programming processes & signals

Size: px
Start display at page:

Download "Network Programming processes & signals"

Transcription

1 Network Programming processes & signals

2 Processes in Linux Processes identifier 식별자 (PID, process identifier) 2 ~ 정수값 1: init process Process functionalities Stack Space : 지역변수, 함수호출및반환등제어용 환경변수를위한환경공간 자체프로그램카운터관리

3 Process status 프로세스상태보기명령어 ps af, ps ax top, gtop System Process x, xx, xxx 자리수의프로세스 주로 booting 시생성 (init 에의해 ) 시스템의유지관리운영프로세스 프로세스의우선순위 Process scheduler 에의해프로세서를점유할권리 기준값 : 10 (gtop 에의해볼수있음 ) nice : 기준값 +10 으로변경 % nice pid renice : 우선순위변경 % renice pid

4 New process creation & running system() exec() fork()

5 system() #include <stdlib.h> int system(const char *string) *string 으로전달되는실행가능코드를실행 실행종료되면 shell 혹은 control 귀환 일반적으로 shell 에서직접명령어수행이타당 단, 프로그램속에서실행이필요한경우사용 참고 : background & foreground processes

6 system() : exam #include <stdlib.h> #include <stdio.h> int main() { printf("running ps with system\n") system("ps -ax"); printf("done.\n"); exit(0);

7 exec() 프로세스대체 Caller process 에서 Callee process 로 pid, 프로세스환경등이이전 이전프로세스의내용은임무끝 현재프로세스를 path 나 file 인수에지정된실행파일을실행하기위하여새로운프로세스로대체

8 exec() 프로세스시작방법과인수전달방법제공 관련함수 #include <unistd.h> char **environ; init execl() int execlp() int execle() int execv() int execvp() int execve()

9 exec() l(), l_() execl(),execlp(), execle() 알수없는개수의 argument 전달 Null pointer 로끝나는개수의인수전달받음 v(), v_() execv(), execvp() argv 전달 p() $PATH 환경변수검색 e() Environment 변수전달가능

10 exec() #include <unistd.h> extern char **environ; int execl(const char *path, const char *arg,...); int execlp(const char *file, const char *arg,...); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); path 실행파일의경로로상대경로와절대경로모두사용할수있다. file 경로이름이아닌실행파일의이름이다. 반환값 호출이성공하면호출하는프로세스에서는반환값을받을수없다. 만약함수호출후 -1 이반환되면이는함수호출이실패했음을의미한다.

11 exec() #include <unistd.h> extern char **environ; int execl(const char *path, const char *arg,...); int execlp(const char *file, const char *arg,...); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); arg argv path 나 file 로지정한실행파일을실행할때필요한명령어라인의옵션과인자이다. 한개이상을지정할수있으며마지막인자는반드시 NULL 포인터로지정해야한다. arg 와같은의미를가지나문자형포인터의배열로형태가다르다. 배열의마지막은 NULL 문자열로끝나야한다.

12 exec() exec() 계열의함수는지정한실행파일로부터프로세스를생성한다. Cf: fork 는실행중인프로세스로부터새로운프로세스를생성한다. exec() 계열함수의사용예 Shell prompt 상에서 ls 를실행하는것과비교 $ ls -l /etc... execlp("ls", "ls", "-l", etc", (char *)0); main 함수의 *argv[] 에저장되는문자열들과같다. 프로세스를생성하기위해선택된실행파일의이름이다.

13 exec() 호출프로세스와피호출프로세스 호출프로세스 (caller process) exec() 를실행하는프로세스 피호출프로세스 (callee process) exec() 에의해생성되는프로세스 exec() 를성공적으로호출한결과 호출프로세스는종료된다.( 즉프로세스대체!) 호출프로세스가메모리영역을피호출프로세스가차지한다. 호출프로세스의 PID 를피호출프로세스가물려받는다.

14 exec()

15 exec() : exec 계열함수의구분 함수이름에 p 가있고없고의차이 p 가없으면 경로 (path) 로실행파일을지정한다. p 가있으면 실행파일의이름만지정한다. 경로를지정하는경우 (p 가없을경우 ) 지정한 ( 상대 / 절대 ) 경로에서해당파일을찾는다. 파일의이름만지정하는경우 (p 가있을경우 ) shell 환경변수 PATH 에서지정한디렉터리를차례대로검색하여찾는다. 예 ) $ printenv PATH 환경변수 PATH 의값을출력한다.

16 execlp() #include <unistd.h> #include <stdio.h> int main() { printf("running ps with execlp\n"); execlp("ps", "ps", "-ax", 0); printf("done.\n"); exit(0);

17 execl() #include <unistd.h> main() { printf("before executing ls -l\n"); 인자의나열이끝났음을의미한다. execl("/bin/ls", "ls", "-l", (char *)0); printf("after executing ls -l\n"); exec 호출이성공하면실행되지않는다. ( 될수가없다.) $./a.out before executing ls -l -rwxr-xr-x 1 usp student Oct 24 21:57 ex07-03 $

18 execv() #include <stdio.h> main() { char *arg[] = {"ls", "-l", (char *)0; printf("before executing ls -l\n"); execv("/bin/ls", arg); printf("after executing ls -l\n"); 이름에 l 이포함된경우와 v 가포함된경우의차이점이다. $./a.out before executing ls -l -rwxr-xr-x 1 usp student Oct 24 21:57 ex07-04 $

19 exec() 사용예 #include <unistd.h> /* example parameters, argv[0] */ Const char *ps_argv[]={ ps, -ax, 0; Const char *ps_envp[]={ PATH=/bin:/usr/bin, TERM=xterm, 0; /examples of exec() calls */ execl( bin/ps, ps, -ax, 0); /* PATH 제공 */ execlp( ps, ps, -ax, 0); /* /bin 이 PATH 에존재가정 */ execv( /bin.ps, ps_argv); execvp( ps, ps_argv); execve( /bin/ps, ps_argv, ps_envp);

20 fork() : 프로세스복제 하나이상의함수를수행하는프로세스사용가능 process 혹은 thread 새로운프로세를복제 parent process <> child process Parent process 와속성을많이가지는새로운 child procss 환경을가짐 Caller 와비슷, 같은코드실행 자체데이타공간 / 환경 / file descriptor 가짐 Parent process 에서 fork() 후새로운 pid 반환 Child process 에는 0 을반환 실패할경우 -1 CHILD_MAX 에의해최대개수제한

21 fork() : 관련함수 프로세스를생성하고종료하는시스템호출 / 표준라이브러리함수 함수 의미 fork() 자신과완전히동일한프로세스를생성한다. wait() exit Child process 종료기다리기 종료에따른상태값을부모프로세스에게전달하며프로세스를종료한다. atexit exit 로프로세스를종료할때수행할함수를등록한다. _exit atexit 로등록한함수를호출하지않고프로세스를종료한다.

22 Relationship between parent process and child process / return values Process (running) fork() 새로운 PID 반환 0 을반환 Parent process (running continue) Child Process (running newly)

23 fork() #include <sys/types.h> #include <unistd.h> pid_t fork(void); pid_t fork 호출이성공하여자식프로세스가만들어지면부모프로세스에서는자식프로세스의프로세스 ID 가반환되고자식프로세스에서는 0을반환한다. fork 호출이실패하여자식프로세스가만들어지지않으면부모프로세스에서는 -1이반환된다. 프로세스는실행파일로존재하는프로그램으로부터생성되는것이일반적이다. 그러나, fork 를사용하면실행중인프로세스를복제하여새로운프로세스를생성할수있다.

24 fork() 예제 1 #include <sys/types.h> #include <unistd.h> #include <stdio.h> int main() { pid_t pid; char *message; int n; printf("fork program starting\n"); pid = fork(); switch(pid) { case -1: perror("fork failed"); exit(1); case 0: message = "This is the child"; n = 5; break; default: message = "This is the parent"; n = 3; break; for(; n > 0; n--) { puts(message); sleep(1); exit(0);

25 fork() 예제 1 결과 실행결과 #./a.out fork program starting This is the parent This is the child This is the parent This is the child This is the parent This is the child This is the child This is the child #

26 fork() 예제 2 #include <unistd.h> #include <stdlib.h> #include <sys/types.h> void cleanupaction(void); main() { 프로세스식별번호를저장한다. pid_t pid; int i; for(i = 0; i < 3; i++) { printf("before fork [%d]\n", i); sleep(1); pid = fork(); 자식프로세스를생성한다. pid 에는사직프로세스의식별번호가저장된다.

27 fork() 예제 2 if(pid > 0) { for( ; i < 7; i++) { printf("parent [%d]\n", i); sleep(1); 부모프로세스가수행하는 부분이다. clean-up-action을등록한 atexit(cleanupaction); 다. 자식프로세스가수행하는 else if(pid == 0) { 부분이다. for( ; i < 5; i++) { printf("child [%d]\n", i); sleep(1); ls 를실행하여새로운 execl("/bin/ls", "ls", "-l", (char *)0); 프로세스를생성한다. 자식프로세스생성에실패 else { 했을때실행되는부분이다. printf("fail to fork child process\n");

28 fork() 예제 2 exit(0); /* end of main */ void cleanupaction(void) exit 호출시실행될함수이다. (clean-upaction) { printf("clean-up-action\n");

29 fork() 예제 2 프로그램의실행결과 $./a.out before fork [0] before fork [1] before fork [2] parent [3] child [3] parent [4] -rwxr-xr-x 1 usp student Oct 26 00:31 ex07-01 parent [5] parent [6] clean-up-action $

30 fork() 부모 (parent) 프로세스와자식 (child) 프로세스 fork 를호출하여새로운프로세스를생성할때, fork 를호출하는쪽을부모프로세스라고하고새로생성된쪽을자식프로세스라고한다. 부모프로세스와자식프로세스는서로다른프로세스이다. 프로세스식별번호 (PID) 가서로다르다. 자식프로세스의부모프로세스식별번호 (PPID) 는자신을생성한부모프로세스가된다. 자식프로세스는부모프로세스가 fork 를호출하던시점의상태를그대로물려받는다. 프로그램코드 프로그램변수에저장되어있는데이터값 하드웨어레지스터의값 프로그램스택의값등등 fork 호출이후에부모와자식프로세스는자신들의나머지프로그램코드를수행한다.

31 parent / child process fork() 를사용한프로세스생성

32 fork() fork 를호출하는프로그램의구조 fork 를호출하는시점을기준으로, fork 를호출한이후에부모프로세스가할일과자식프로세스가할일을구분한다. fork 의반환값으로부모프로세스와자식프로세스를구분한다. pid = fork(); /* fork 호출이성공하면자식프로세스가생성된다. */ if(pid == 0) if(pid == 0) /* 자식프로세스가수행할부분 */ ; else if(pid > 0) /* 부모프로세스가수행할부분 */ ; else /* fork 호출이실패할경우수행할부분 */ ;

33 fork() #include <unistd.h> #include <sys/types.h> i); printf("before calling fork(%d)\n", main() { pid_t pid; int i = 0; i++; $./a.out before calling fork(1) parent process(0) child process(2) $ ++i); --i); pid = fork(); if(pid == 0) /* 자식프로세스가수행할부분 */ printf("child process(%d)\n", else if(pid > 0) else 부분 */ /* 부모프로세스가수행할부분 */ printf("parent process(%d)\n", /* fork 호출이실패할경우수행할 printf("fail to fork\n");

34 fork 와 exec 비교 프로세스의원본 셸명령줄의프로그램인자 부모 ( 또는호출 ) 프로세스의상태 자식 ( 또는피호출 ) 프로세스의메모리상의위치 프로세스생성후자식 ( 또는피호출 ) 프로세스의프로그램코드의시작지점 프로세스식별번호 (PID) 프로세스의원본인파일에대한권한 fork() 부모프로세스를복제하여새로운프로세스를생성한다. 새롭게지정할수없고부모프로세스의것을그대로사용한다. 자식프로세스를생성한후에도자신의나머지코드를실행한다. 부모프로세스와다른곳에위치한다. exec() 지정한프로그램 ( 파일 ) 을실행하여프로세스를생성한다. 필요할경우적용할수있다. 호출이성공할경우호출 (Caller) 프로세스는종료된다. 호출프로세스가있던자리를피호출프로세스가물려받는다. fork 호출이후부터수행된다. 프로그램의처음부터수행된다. 자식프로세스는새로운식별번호를할당받는다. 부모프로세스를복제하므로상관없다. 호출프로세스의식별번호를피호출프로세스가물려받는다. 실행파일에대한실행권한이필요하다.

35 fork & exec fork 와 exec 의비교 fork 자신과동일한자식프로세스만생성할수있다. 다른종류의프로세스를생성할수없다. 자식프로세스를생성하더라도자신은종료되지않는다. exec 자신과다른종류의프로세스를생성할수있다. 새로운프로세스를생성하면자신은종료된다. fork 와 exec 를함께사용하기 fork 를호출하여자식프로세스를생성한후에자식프로세스가 exec 를호출하여새로운프로세스를생성한다. 결과적으로, 부모프로세스는종류가다른자식프로세스를생성하고자신역시나머지작업을계속할수있다.

36 fork & exec #include <unistd.h> #include <sys/types.h> main() { pid_t pid; printf("hello!\n"); pid = fork(); if(pid > 0) { /* parent process */ printf("parent\n"); sleep(1); else if(pid == 0) { /* child process */ printf("child\n"); execl("/bin/ls", "ls", "-l", (char *)0); printf("fail to execute ls\n"); else printf("parent : fail to fork\n"); printf("bye!\n"); 부모프로세스는자식프로세스의생존여부에상관없이자신의나머지일을수행한다. 자식프로세스가 exec를호출하여새로운프로세스를생성한다. 새로운프로세스를생성하고자식프로세스는종료된다.

37 fork & exec $ /a.out hello! parent child -rwxr-xr-x 1 usp student Oct 25 15:56 ex07-07 bye! $

38 exit() 프로세스를종료하면서부모프로세스에게종료와관련된상태값을넘겨준다. #include <stdlib.h> void exit(int status); status 부모프로세스에게전달되는상태값으로 0~255(1 바이트 ) 의값이사용된다. 반환값없음 exit는프로세스를의도적으로종료시킨다. 이외에프로세스가종료하는경우는 더이상수행할문장이없거나 main 함수내에서 return문을수행할때이다. status의값은 0~255 사이의값으로각각에대한정해진의미가없다. 프로그램작성자가임의로정해서사용한다.

39 atexit() 프로세스가 exit 를호출하여종료할때수행되는함수들을등록한다. #include <stdlib.h> int atexit(void (*function)(void)); function atexit 로등록할함수의이름이다. 반환값 호출이성공하면 0 을반환하고, 실패하면 0 이아닌값을반환한다. function 함수의이름으로함수는 void function(void); 형으로정의되어야한다. 종료시마무리작업 (clean-up-action) 프로세스가종료할때깔끔한마무리를위해수행해야하는작업들 최대 32 개까지등록할수있다. ( 실제실행순서는등록순서의역순 )

40 atexit() #include <unistd.h> #include <stdlib.h> void func1(void); void func2(void); main() { printf("hello!\n"); atexit(func1); atexit(func2); printf("bye!\n"); exit(0); $ /a.out hello! bye! func2 func1 $ void func1(void) { printf("func1\n"); void func2(void) { printf("func2\n");

41 _exit () exit 함수와같지만 clean-up-action 을수행하지않는다. #include <unistd.h> void _exit(int status); status 반환값 부모프로세스에게전달되는상태값으로 0~255(1 바이트 ) 의값이사용된다. 없음 _exit 는 atexit 로 clean-up-action 에해당하는함수들을등록해놓았더라도종료할때이를수행하지않는다.

42 _exit() #include <unistd.h> #include <stdlib.h> $ /a.out hello! bye! $ void func1(void); void func2(void); main() { printf("hello!\n"); atexit(func1); atexit(func2); printf("bye!\n"); _exit(0); void func1(void) { printf("func1\n"); void func2(void) { printf("func2\n");

43 wait() : child process 대기 #include <sys/types.h> #include <sys/wait.h> pid_t wait(int *stat_loc); pid_t *stat_loc Child process 로부터반환되는 PID Child process 의종료시전달되는값 (main() or exit()) sys/wait.h 참조 Child process 가끝날때까지 parent proces 가기다림 Parent process vs child process running time, racing condition child process 가종료될때까지 parent process 는대기 return value: child process 의 pid return status: *stat_loc -> sys/wait.h 에상태정보에대한 return value 가있음

44 wait() : Exam #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <stdio.h> main() { pid_t pid; char *message; int n; int exit_code; printf("fork program starting\n"); pid = fork(); switch(pid) { case -1: exit(1); case 0: message = "This is the child"; n = 5; exit_code = 37; break; default: message = "This is the parent"; n = 3; exit_code = 0; break; for(; n > 0; n--) { puts(message); sleep(1); /* 아래코드에서 parent process 는 child process 가종료될때까지기다린다 */ if(pid) { int stat_val; pid_t child_pid; child_pid = wait(&stat_val); printf("child has finished: PID = %d\n", child_pid); if(wifexited(stat_val)) printf("child exited with code %d\n", WEXITSTATUS(stat_val)); else printf("child terminated abnormally\n"); exit (exit_code);

45 wait() : Exam 실행결과 #./a.out For programstarting This is the parent This is the child This is the parent This is the child This is the parent This is the child This is the child This is the child Child has finished: PID = 1234 Child exited with code 37 #

46 waitpid() : 특정 child process 대기 #include <sys/types.h> #include <sys/wait.h> pid_t waitpid(pid_t pid, init *stat_loc, int options); pid_t *stat_loc Child process 로부터반환되는 PID Child process 의종료시전달되는값 (main() or exit()) sys/wait.h 참조 Child process 가끝날때까지 parent proces 가기다림 특정 child process PID 전달하여기다림 parent process 에서특정 pid 의 child process 를대기 다수 child process 상황에서유용 Options : waitpid() 의동작을변경가능 option Ex: WNOHANG : parent process 의실행을중단하지않음

47 waitpid() 사용예 : waitpid( child_pid, (init *)0, WNOHANG); - no terminated/not stopped : return=0 OR PID, - in error case: return=-1, errno??

48 Zombie process fork() 한 child process 의종료를 parent process 는무작정기다린다 parent process 의 process table 은 child process 가정상종료, return 되지않으면삭제되지않음 비정상적으로프로세스가계속동작되는경우발생 표시 : zombie or defunct init process 에의해정리 system resource 를고갈시킬위험 강제정리 : by root # kill -9 PIDs

49 Zombie process 의예 #include <sys/types.h> #include <unistd.h> #include <stdio.h> main() { pid_t pid; char *message; int n; printf("fork program starting\n"); pid = fork(); switch(pid) { case -1: perror("fork failed"); exit(1); case 0: message = "This is the child"; n = 3; break; default: message = "This is the parent"; n = 5; break; for(; n > 0; n--) { puts(message); sleep(1); exit(0); 실행방법 #./a.out & 실행중에 ps 명령어로확인 # ps <zomebie> 혹은 <defunct> 로표시됨

50 Signal Signal 프로세스실행중예러등에의해발생되는 event 시스템, 혹은다른프로세스이의해특정프로세스에전달되어상태를변환시키는 event interrupt, process kill.. 프로그램예외상황처리중에서외부 signal 의처리부분필요 Signal 을받은프로세스는적절한대응을해야한다 무시, 바로종료, 열린파일닫기, 기본동작복구등등 Signal 을전달받은프로세스에서적절한대응을못할경우종료될수있음 일반적으로실행디렉토리에 core 파일을 dump Debugging 에유용한파일

51 singal() #include <signal.h> void (*signal(int sig, void(*func)(int)))(int); sig func 처리해야할 signal 특정 signal 발생시실행할함수

52 signal Signal name description SIGABORT 프로세스취소 SIGALRM 알람시계 SIGFPE 부종소수예외 SIGHUP 접속종료 SIGILL 부적절한지시어 SIGKILL 처리하거나무시할수없는상태, 종료 SIGPIPE Reader 가없는파이프에쓰기 SIGQUIT 터미널종료 SIGSEGV 부적절한메모리세그먼트접근 SIGTERM 종료 SIGUSR1 사용자정의 1 SIGUSR2 사용자정의 2 SIGINT 터미널에서인터럽트

53 Signal Exam #include <signal.h> #include <stdio.h> #include <unistd.h> void ouch(int sig) { printf("ouch! - I got signal %d\n", sig); (void) signal(sigint, SIG_DFL); main() { (void) signal(sigint, ouch); while(1) { printf("hello World!\n"); sleep(1); SIGINT : intrrupt(^c) 최초 ^C: ouch() call 두번째 ^C: ouch() 에서 SIG_DFL 에의해원래 SIGINT 의기능복구 -> 따라서 process terminate!

2009년 상반기 사업계획

2009년 상반기 사업계획 프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 3/24 프로세스생성 [1]

More information

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D> 학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 프로세스생성 [1] 프로그램실행

More information

Microsoft PowerPoint - 10_Process

Microsoft PowerPoint - 10_Process Linux 프로세스프로그래밍 Programming - 프로세스생성 : fork, exec - 프로세스동기화 : wait - 프로세스관리함수 프로세스관련함수 프로세스생성과종료 함수 의미 fork 자신과완전히동일한프로세스를생성한다. exec 계열지정한실행파일로부터프로세스를생성한다. exit 종료에따른상태값을부모프로세스에게전달하며프로세스를종료한다. atexit exit

More information

ABC 11장

ABC 11장 12 장고급응용 0 수행중인프로그램 프로세스 모든프로세스는유일한프로세스식별번호 (PID) 를가짐 유닉스에서는 ps 명령을사용하여프로세스목록을볼수있음 12-1 프로세스 $ ps -aux USER PID %CPU %MEM SZ RSS TT STAT START TIME COMMAND blufox 17725 34.0 1.6 146 105 i2 R 15:13 0:00

More information

1장. 유닉스 시스템 프로그래밍 개요

1장.  유닉스 시스템 프로그래밍 개요 Unix 프로그래밍및실습 7 장. 시그널 - 과제보충 응용과제 1 부모프로세스는반복해서메뉴를출력하고사용자로부터주문을받아자식프로세스에게주문내용을알린다. (SIGUSR1) ( 일단주문을받으면음식이완료되기전까지 SIGUSR1 을제외한다른시그널은모두무시 ) timer 자식프로세스는주문을받으면조리를시작한다. ( 일단조리를시작하면음식이완성되기전까지 SIGALARM 을제외한다른시그널은모두무시

More information

좀비프로세스 2

좀비프로세스 2 Signal & Inter-Process Communication Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 좀비프로세스 2 좀비프로세스 (zombie process) 좀비프로세스란프로세스종료후메모리상에서사라지지않는프로세스 좀비프로세스의생성이유. 자식프로세스는부모프로세스에게실행결과에대한값을반환해야한다.

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

제9장 프로세스 제어

제9장 프로세스 제어 제 9 장프로세스제어 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 제 9 장 목차 프로세스생성 프로그램실행 입출력재지정 프로세스그룹 시스템부팅 2 9.1 절 프로세스생성 fork() 시스템호출 새로운프로그램을실행하기위해서는먼저새로운프로세스를생성해야하는데, fork() 시스템호출이새로운프로세스를생성하는유일한방법임. 함수프로토타입 pid_t fork(void);

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

System Programming Lab

System Programming Lab System Programming Lab Week 4: Shell Schedule for your own shell 1 st shell 기본기능 fork / exec Background Processing/ Sequential Execution ls, find, grep 2 nd Environment variables/ Shell variables built-in

More information

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode] Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)

More information

<C1A63130C0E5C7C1B7CEBCBCBDBA2E687770>

<C1A63130C0E5C7C1B7CEBCBCBDBA2E687770> 제 10 장프로세스프로그래밍 프로세스시작 / 종료 자식프로세스생성 프로세스내에서새로운프로그램실행 시그널 시스템부팅 10.1 프로그램시작및종료 Unix 에서프로그램은어떻게실행이시작되고종료될까? 프로그램은 10.3 절에서살펴볼 exec 시스템호출에의해실행된다. 이호출은실행될프로그램의시작루틴에게명령줄인수 (command-line arguments) 와환경변수 (environment

More information

/chroot/lib/ /chroot/etc/

/chroot/lib/ /chroot/etc/ 구축 환경 VirtualBox - Fedora 15 (kernel : 2.6.40.4-5.fc15.i686.PAE) 작동 원리 chroot유저 ssh 접속 -> 접속유저의 홈디렉토리 밑.ssh의 rc 파일 실행 -> daemonstart실행 -> daemon 작동 -> 접속 유저만의 Jail 디렉토리 생성 -> 접속 유저의.bashrc 의 chroot 명령어

More information

Microsoft PowerPoint - 10_Signal

Microsoft PowerPoint - 10_Signal Operating System Laboratory 시그널 - IPC - 시그널의종류 - 시그널구현함수 IPC 프로세스간통신 (Inter-Process Communication) 실행중인프로세스간에데이터를주고받는기법 IPC 에는매우많은방법이있다! File Pipe/Named pipe Socket Shared memory Message passing Remote

More information

10.

10. 10. 10.1 10.2 Library Routine: void perror (char* str) perror( ) str Error 0 10.3 10.3 int fd; /* */ fd = open (filename, ) /*, */ if (fd = = -1) { /* */ } fcnt1 (fd, ); /* */ read (fd, ); /* */ write

More information

Chap04(Signals and Sessions).PDF

Chap04(Signals and Sessions).PDF Signals and Session Management 2002 2 Hyun-Ju Park (Signal)? Introduction (1) mechanism events : asynchronous events - interrupt signal from users : synchronous events - exceptions (accessing an illegal

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 시그널 2 11.1 시그널 시그널 시그널은예기치않은사건이발생할때이를알리는소프트웨어인터럽트이다. 시그널발생예 SIGFPE 부동소수점오류 SIGPWR 정전 SIGALRM 알람시계울림 SIGCHLD 자식프로세스종료 SIGINT 키보드로부터종료요청 (Ctrl-C) SIGSTP 키보드로부터정지요청 (Ctrl-Z) 3 주요시그널 시그널이름 의미 기본처리 SIGABRT

More information

Microsoft PowerPoint - chap9 [호환 모드]

Microsoft PowerPoint - chap9 [호환 모드] 제 9 장프로세스관계 숙대창병모 1 Contents 1. Logins 2. Process Groups 3. Sessions 4. Controlling Terminal 5. Job Control 숙대창병모 2 로그인 숙대창병모 3 터미널로그인 /etc/ttys: 1 line per terminal device getty: opens terminal device

More information

Microsoft PowerPoint - 09-Pipe

Microsoft PowerPoint - 09-Pipe 9. 파이프 상명대학교소프트웨어학부 파이프 시그널은이상한사건이나오류를처리하는데는이용하지만, 한프로세스로부터다른프로세스로대량의정보를전송하는데는부적합하다. 파이프 한프로세스를다른관련된프로세스에연결시켜주는단방향의통신채널 2 pipe() Usage #include int pipe(int filedes[2]); 3 < ex_1.c > #include

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 12 장파이프 2 12.1 파이프 파이프원리 $ who sort 파이프 3 물을보내는수도파이프와비슷 한프로세스는쓰기용파일디스크립터를이용하여파이프에데이터를보내고 ( 쓰고 ) 다른프로세스는읽기용파일디스크립터를이용하여그파이프에서데이터를받는다 ( 읽는다 ). 한방향 (one way) 통신 파이프생성 파이프는두개의파일디스크립터를갖는다. 하나는쓰기용이고다른하나는읽기용이다.

More information

Microsoft PowerPoint - ch09_파이프 [호환 모드]

Microsoft PowerPoint - ch09_파이프 [호환 모드] 학습목표 파이프를이용한 IPC 기법을이해한다. 이름없는파이프를이용해통신프로그램을작성할수있다. 이름있는파이프를이용해통신프로그램을작성할수있다. 파이프 IT CookBook, 유닉스시스템프로그래밍 2/20 목차 파이프의개념 이름없는파이프만들기 복잡한파이프생성 양방향파이프활용 이름있는파이프만들기 파이프의개념 파이프 두프로세스간에통신할수있도록해주는특수파일 그냥파이프라고하면일반적으로이름없는파이프를의미

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 파이프 IT CookBook, 유닉스시스템프로그래밍 학습목표 파이프를이용한 IPC 기법을이해한다. 이름없는파이프를이용해통신프로그램을작성할수있다. 이름있는파이프를이용해통신프로그램을작성할수있다. 2/20 목차 파이프의개념 이름없는파이프만들기 복잡한파이프생성 양방향파이프활용 이름있는파이프만들기 3/20 파이프의개념 파이프 두프로세스간에통신할수있도록해주는특수파일 그냥파이프라고하면일반적으로이름없는파이프를의미

More information

chap12(process).hwp

chap12(process).hwp 제 12 장프로세스 프로세스는파일과더불어유닉스운영체제가제공하는핵심개념중의하나이다. 유닉스시스템을깊이있게이해하기위해서는프로세스에대해정확히이해해야한다. 이장에서는프로그램이시작되는과정, 프로세스의구조, 프로세스생성및프로그램실행메커니즘, 프로세스사이의시그널등에대해서자세히살펴본다. 12.1 프로그램시작및종료 유닉스에서프로그램은어떻게실행이시작되고종료될까? 프로그램은 12.3절에서살펴볼

More information

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

More information

슬라이드 1

슬라이드 1 / 유닉스시스템개요 / 파일 / 프로세스 01 File Descriptor file file descriptor file type unix 에서의파일은단지바이트들의나열임 operating system 은파일에어떤포맷도부과하지않음 파일의내용은바이트단위로주소를줄수있음 file descriptor 는 0 이나양수임 file 은 open 이나 creat 로 file

More information

리눅스 프로세스 관리

리눅스 프로세스 관리 프로세스 (Process) Process 프로그램이나명령어를실행하면메모리에적재되어실제로실행되고있는상태를의미 이러한프로세스들은프로세스가시작하면서할당받는프로세스식별번호인 PID(Process ID), 해당프로세스를실행한부모프로세스를나타내는 PPID(Parent Process ID), UID 와 GID 정보를통해해당프로세스가어느사용자에속해있는지, 프로세스가파일에대해갖는권한및프로세스가실행된터미널,

More information

<4D F736F F F696E74202D BDC3B1D7B3CEB0FA20BDC3B1D7B3CE20C3B3B8AE2E707074>

<4D F736F F F696E74202D BDC3B1D7B3CEB0FA20BDC3B1D7B3CE20C3B3B8AE2E707074> 10 장시그널과시그널처리 시그널과시그널처리 - sigemptyset, sigfillset - sigaddset, sigdelset, sigismember - sigaction - sigprocmask - kill, raise - alarm - pause 1 1. 서론 시그널의종류 이름설명 DA SIGABRT abort() 를호출할때발생 SIGALRM 설정된알람시간이경과한겨우발생

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

Microsoft PowerPoint - SP6장-시그널.ppt [호환 모드]

Microsoft PowerPoint - SP6장-시그널.ppt [호환 모드] UNIX System Programming Ki-Hyun, JUNG Email : kingjung@paran.com 구성 1 장 : 기본적인개념들과기초적인용어들 2 장 : 파일을다루는시스템호출 primitives 3 장 : 파일에대한문맥상의특성 4 장 : 유닉스디렉토리개념 5 장 : 유닉스프로세스의기본적인성질과제어 6 장 : 프로세스간통신 7 장 : 유용한유닉스프로세스간통신기법

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 4 가지중하나. (1) 프로그램수행직후, (2) kill 명령실행직후, (3) 15 #include <signal.

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 4 가지중하나. (1) 프로그램수행직후, (2) kill 명령실행직후, (3) 15 #include <signal. 학번 : 이름 : 1. 다음가정하에서아래프로그램의출력물을예측하세요. 가정 : 부모프로세스의 process id=20100, 자식프로세스의 process id=20101. int glob = 31; /* external variable in initialized data */ char buf[] = "a write to stdout\n"; int main(void)

More information

슬라이드 1

슬라이드 1 프로세스 (Process) (2) Chapter #9 강의목차 Process 관련시스템호출 Simple Shell Session Unix System Programming 2 프로세스정보 프로세스 ID 정보 프로세스정보 (1) PID(Process ID) 프로세스에할당되는유일한 ID( 정수값 ) PPID(Parent Process ID) 부모프로세스 ID PGID(Porcess

More information

고급 프로그래밍 설계

고급 프로그래밍 설계 UNIT 12 프로세스제어 광운대학교로봇 SW 교육원 최상훈 init 프로세스 2 init 프로세스 프로세스 ID : 1 시스템부팅젃차마지막에커널에의해실행됨 커널부팅이후 UNIX 시스템을뛰우는역핛을함 시스템의존적초기화파일들 /etc/rc* 파일들, /etc/inittab 과, /etc/init.d 의파일들을읽고시스템을특정핚상태 ( 이를테면다중사용자상태 ) 로설정함

More information

Microsoft PowerPoint - chap6 [호환 모드]

Microsoft PowerPoint - chap6 [호환 모드] 제 6 장프로세스 (Process) 숙대창병모 1 내용 프로세스시작 / 종료 명령중인수 / 환경변수 메모리배치 / 할당 비지역점프 숙대창병모 2 프로세스시작 / 종료 숙대창병모 3 Process Start Kernel exec system call user process Cstart-up routine call return int main(int argc,

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

C 프로그래밊 개요

C 프로그래밊 개요 함수 (2) 2009 년 9 월 24 일 김경중 공지사항 10 월 1 일목요일수업휴강 숙제 #1 마감 : 10 월 6 일화요일 기초 함수를만들어라! 입력 함수 ( 기능수행 ) 반환 사용자정의함수 정의 : 사용자가자신의목적에따라직접작성한함수 함수의원형 (Function Prototype) + 함수의본체 (Function Body) : 함수의원형은함수에대한기본적정보만을포함

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

Microsoft PowerPoint oshw1.ppt [호환 모드]

Microsoft PowerPoint oshw1.ppt [호환 모드] 제출일 : 4월 5일 ( 목 ) 까지 과제내용» 연습문제풀이 1 1.6 2 2.8 3 3.8» 프로그래밍과제 4 5 과제 1 : 기본이해 # ftp 211.119.245.75 (id: anonymous, passwd: 자기 loginid) 또는 (id: ftp, passwd:ftp) 한다음 # cd pub 하고 # get p.c 하여 p 프로그램의 version

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 UNIX 및실습 8 장. 프로세스와사용자 명령익히기 1 학습목표 유닉스에서프로세스가무엇인지그개념을이해한다. 프로세스와관련된유닉스명령의사용방법을익힌다. 포그라운드처리와백그라운드처리의차이를이해한다. 사용자정보를보는명령의사용방법을익힌다. 2 01. 프로세스의개념과종류 프로세스 (process) 현재시스템에서실행중인프로그램 프로세스는고유번호를가진다. Process

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버

More information

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 6 장 중급소켓프로그래밍 (2) 목차 제 6 장중급소켓프로그래밍 6.1 소켓옵션 6.2 시그널 6.3 넌블로킹입 / 출력 6.4 멀티태스킹 6.5 멀티플렉싱 6.6 다수의수신자처리 2 시그널 (Signal) 시그널이란? 예상치않은이벤트발생에따른일종의소프트웨어인터럽트 Ex) ctrl + c, ctrl + z, 자식프로세스의종료 외부에서프로세스에게전달할수있는유일한통로

More information

Microsoft PowerPoint oshw1.ppt [호환 모드]

Microsoft PowerPoint oshw1.ppt [호환 모드] 과제 1 : 기본이해 제출일 : 4월 10일 ( 목 ) 까지 과제내용» 연습문제풀이 1 1.6 2 2.8 3 3.8» 프로그래밍과제 4 $ ftp 211.119.245.75 (id: anonymous, passwd: 자기loginID) 또는 (id: ftp, passwd:ftp) 한다음 # cd pub 하고 # get p.c 하여 p 프로그램의 version

More information

gdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이

gdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이 gdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이나왔다한다. Debugging을하는가장원초적방법은프로그램소스를눈으로따라가며, 머리로실행시켜논리적오류를찾아내는것이다.

More information

Microsoft PowerPoint oshw1&2.ppt [호환 모드]

Microsoft PowerPoint oshw1&2.ppt [호환 모드] 과제 1 : 기본이해 (4 월 8 일까지 ) 1. 1장 & 2장연습문제풀이 1 1.4 2 1.17 3 2.3 4 2.7 2. 프로그래밍과제 1» 연습문제 2.18 프로그램안에서가능한한많은 system call을사용한다. ptrace, dtrace 시스템호출추적방법은테스트한후수업시간에설명할예정이다. 3. 프로그래밍과제 2 ( 교재 p138 Chapter 3 프로젝트

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

제8장 프로세스

제8장 프로세스 제 8 장프로세스 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 1 목차 쉘과프로세스 프로그램실행 프로그램종료 프로세스 ID 프로세스이미지 2 8.1 절 프로세스 프로세스 (process) 는파일과더불어리눅스운영체제의핵심개념중하나임. 리눅스시스템을깊이있게이해하기위해서는프로세스에대해서정확히이해해야함. 프로세스는간단히실행중인프로그램이라고할수있음. 프로그램이실행되면프로세스가됨.

More information

제8장 프로세스

제8장 프로세스 제 8 장프로세스 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 제 8 장 목차 쉘과프로세스 프로그램실행 프로그램종료 프로세스 ID 프로세스이미지 2 8.1 절 프로세스 프로세스 (process) 는파일과더불어리눅스운영체제의핵심개념중하나임. 리눅스시스템을깊이있게이해하기위해서는프로세스에대하여정확히이해해야함. 프로세스는실행중인프로그램이라고간단히말할수있음. 프로그램이실행되면프로세스가됨.

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 4 장파일 컴퓨터과학과박환수 1 2 4.1 시스템호출 컴퓨터시스템구조 유닉스커널 (kernel) 하드웨어를운영관리하여다음과같은서비스를제공 파일관리 (File management) 프로세스관리 (Process management) 메모리관리 (Memory management) 통신관리 (Communication management) 주변장치관리 (Device

More information

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C

02.Create a shellcode that executes /bin/sh Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes /bin/sh C 02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C language Assembly code Change permissions(seteuid())

More information

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap06-5 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.

More information

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 6 가지중하나. (1) 프로그램수행직후, (2) 5 초후 (3) 10 초후 (4) 15 #include <signa

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 6 가지중하나. (1) 프로그램수행직후, (2) 5 초후 (3) 10 초후 (4) 15 #include <signa 학번 : 이름 : 1. 다음가정하에서아래프로그램의출력물을예측하세요. 가정 : 부모프로세스의 process id=10100, 자식프로세스의 process id=10101. char buf[] = "a write to stdout\n"; int var; /* automatic variable on the stack */ pid_t pid; int glob = 31;

More information

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,

More information

untitled

untitled Embedded System Lab. II Embedded System Lab. II 2 RTOS Hard Real-Time vs Soft Real-Time RTOS Real-Time, Real-Time RTOS General purpose system OS H/W RTOS H/W task Hard Real-Time Real-Time System, Hard

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

제12장 파일 입출력

제12장 파일 입출력 제 4 장파일입출력 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 1 시스템호출 (system call) 파일 (file) 임의접근 (random access) 주요학습내용 2 4.1 절 커널의역할 (kernel) 커널 (kernel) 은운영체제의핵심부분으로서, 하드웨어를운영관리하는여러가지서비스를제공함 파일관리 (File management) 디스크 프로세스관리

More information

Sena Technologies, Inc. HelloDevice Super 1.1.0

Sena Technologies, Inc. HelloDevice Super 1.1.0 HelloDevice Super 110 Copyright 1998-2005, All rights reserved HelloDevice 210 ()137-130 Tel: (02) 573-5422 Fax: (02) 573-7710 E-Mail: support@senacom Website: http://wwwsenacom Revision history Revision

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D> 학습목표 통신프로그램이무엇인지이해한다. 을이용한 IPC 기법을이해한다. 함수를사용해프로그램을작성할수있다. IT CookBook, 유닉스시스템프로그래밍 2/20 목차 의개념 함수 해제함수 의보호모드변경 파일의크기확장 매핑된메모리동기화 데이터교환하기 의개념 파일을프로세스의메모리에매핑 프로세스에전달할데이터를저장한파일을직접프로세스의가상주소공간으로매핑 read, write

More information

슬라이드 1

슬라이드 1 Task 통신및동기화 : 시그널 (Signal) Chapter #10 Cooperating Processes Signal 개요 Signal 처리 Signal 전송 타이머처리 강의목차 Unix System Programming 2 Cooperating Processes (1) Independent process cannot affect or be affected

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 오픈소스소프트웨어개발입문 (CP33992) Linux 명령어사용법 - 계속 부산대학교공과대학정보컴퓨터공학부 파일비교 cmp diff 두파일의동일성을검사하여, 차이가생기는첫번째바이트를보여줌 두파일을비교하여한파일을다른파일로전환하는편집변경을행할때에필요한동작목록을보여줌 2 [ 실습 ] 파일비교 : diff (1) $ vi Hello1.c #include

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

vi 사용법

vi 사용법 유닉스프로그래밍및실습 gdb 사용법 fprintf 이용 단순디버깅 확인하고자하는코드부분에 fprintf(stderr, ) 를이용하여그지점까지도달했는지여부와관심있는변수의값을확인 여러유형의단순한문제를확인할수있음 그러나자세히살펴보기위해서는디버깅툴필요 int main(void) { int count; long large_no; double real_no; init_vars();

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 유닉스프로그래밍및실습 9 장. 시그널 1. 시그널개념 시그널생명주기 시그널이발생한다. 커널이해당시그널을쌓아둔다.( 동일한시그널이오는경우하나만 ) 가능한시점에서커널이적절하게처리한다 커널의처리방법 시그널무시 아무런동작을하지않는다 절대무시할수없는시그널 SIGKILL SIGSTOP 시그널을붙잡아처리 현재코드경로를따라가는실행을중단하고, 시그널마다등록된함수로점프 기본동작

More information

Microsoft PowerPoint - lab14.pptx

Microsoft PowerPoint - lab14.pptx Mobile & Embedded System Lab. Dept. of Computer Engineering Kyung Hee Univ. Keypad Device Control in Embedded Linux HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착되어있다. 2 Keypad Device Driver

More information

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 시스템호출개요 리눅스에서는사용자공간과커널공간을구분 사용자프로그램은사용자모드, 운영체제는커널모드에서수행 커널공간에대한접근은커널 ( 특권, priviledged) 모드에서가능 컴퓨팅자원 (CPU, memory, I/O 등 ) 을안전하게보호 커널수행을안전하게유지

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

vi 사용법

vi 사용법 네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 메모리매핑 IT CookBook, 유닉스시스템프로그래밍 학습목표 통신프로그램이무엇인지이해한다. 메모리매핑을이용한 IPC 기법을이해한다. 메모리매핑함수를사용해프로그램을작성할수있다. 2/20 목차 메모리매핑의개념 메모리매핑함수 메모리매핑해제함수 메모리매핑의보호모드변경 파일의크기확장 매핑된메모리동기화 데이터교환하기 3/20 메모리매핑의개념 메모리매핑 파일을프로세스의메모리에매핑

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

13 주차문자열의표현과입출력

13 주차문자열의표현과입출력 13 주차문자열의표현과입출력 문자표현방법 문자열표현방법 문자열이란무엇인가? 문자열의입출력 문자처리라이브러리함수 표준입출력라이브러리함수 C 언어를이용하여문자열을처리하기위해서는문자형의배열이나포인터를사용하게된다. 문자열을처리하는동작으로는단순하게문자열의입력이나출력기능이외에도문자열의복사나치환, 문자열의길이를구하거나문자열을비교하는기능등많은기능을필요로한다. 그러나이러한기능들을모두구현하기란매우까다로우며,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 중급소켓프로그래밍 (3) 네트워크프로그래밍 6 장 1 목차 제 6장중급소켓프로그래밍 6.1 소켓옵션 6.2 시그널 6.3 넌블로킹입 / 출력 6.4 멀티태스킹 6.5 멀티플렉싱 6.6 다수의수싞자처리 2 멀티태스킹 멀티태스킹이란? 사젂적의미 한사람의사용자가한대의컴퓨터로 2 가지이상의작업을동시에처리하거나, 2 가지이상의프로그램들을동시에실행시키는것 소켓에서의멀티태스킹

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

Microsoft Word - Network Programming_NewVersion_01_.docx

Microsoft Word - Network Programming_NewVersion_01_.docx 10. Unix Domain Socket 105/113 10. Unix Domain Socket 본절에서는 Unix Domain Socket(UDS) 에대한개념과이에대한실습을수행하고, 이와동시에비신뢰적인통신시스템의문제점에대해서분석하도록한다. 이번실습의목표는다음과같다. 1. Unix Domain Socket의사용법을익히고, IPC에대해서실습 2. TCP/IP의응용계층과전달계층의동작을구현및실습

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 DEVELOPMENT ENVIRONMENT 2 MAKE Jo, Heeseung MAKE Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one 2

More information

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)

More information

슬라이드 1

슬라이드 1 Task 통신및동기화 : 파이프 (Pipe) Chapter #11 파이프 (Unamed Pipe) 표준입출력과파이프 FIFO(Named Pipe) 강의목차 Unix System Programming 2 파이프 (Unnamed Pipe) 파이프 (Pipe) (1) 하나의프로세스를다른프로세스에연결시켜주는단방향의통신채널 입출력채널과동기화기능을제공하는특수한형태의파일

More information