제8장 프로세스

Size: px
Start display at page:

Download "제8장 프로세스"

Transcription

1 제 8 장프로세스 리눅스시스템프로그래밍 청주대학교전자공학과 한철수

2 제 8 장 목차 쉘과프로세스 프로그램실행 프로그램종료 프로세스 ID 프로세스이미지 2

3 8.1 절 프로세스 프로세스 (process) 는파일과더불어리눅스운영체제의핵심개념중하나임. 리눅스시스템을깊이있게이해하기위해서는프로세스에대하여정확히이해해야함. 프로세스는실행중인프로그램이라고간단히말할수있음. 프로그램이실행되면프로세스가됨. 이장의내용 쉘이제공하는프로세스관련기능 프로그램이실행되고종료되는과정 프로세스의 ID 프로세스의내부구조 3

4 8.1 절 쉘 쉘 (shell) 은사용자와운영체제사이에창구역할을하는소프트웨어임. 사용자로부터명령어를입력받아이를처리하는명령어처리기 (command processor) 의역할을수행함. Ubuntu 터미널의기본쉘 bash( 배시쉘, bash shell) 4

5 8.1 절 쉘의실행절차 * * 시작파일은환경변수와같은사용자의사용환경을초기화하는데주로사용됨. 사용자시작파일 : ~/.bashrc 5

6 8.1 절 쉘의명령어실행과자식프로세스 쉘은사용자가입력한명령어를실행하기위해새로운자식프로세스를생성하고, 이자식프로세스로하여금입력된명령어를실행하게함. 예 $ date ( 목 ) 17:48:58 KST $./hello hello world! $ 쉘이새로운자식프로세스를 생성하고, 이자식프로세스가 입력된명령어를실행함. 쉘은자식프로세스의실행이 끝날때까지기다림. 자식 프로세스의 실행이 끝나면다시쉘프롬프트를 출력하고 다음 명령어를 기다림. 6

7 8.1 절 명령어열 명령어열은여러명령어를순차적으로실행함. 쉘은각명령어의실행을위한새로운자식프로세스를순차적으로생성하면서, 각프로세스로하여금한명령어씩순차적으로실행하게함. 명령어열의형태 $ 명령어 1; 명령어 2; ; 명령어 n 예 $ date;who;pwd 세개의명령어를순차적으로실행시키기위해 3 개의새로운자식프로세스를순차적으로생성하면서각명령어를순차적으로실행함. 7

8 8.1 절 명령어그룹 명령어그룹은여러명령어를순차적으로실행하는점은명령어열과같음. 명령어그룹의형태 $ ( 명령어 1; 명령어 2; ; 명령어 n) 하지만명령어그룹은모든명령어가표준입력 (stdin), 표준출력 (stdout), 표준에러 (stderr) 를공유한다는점이다름. 따라서입출력재지정과파이프를사용할때, 마치하나의명령어처럼입출력재지정및파이프처리를할수있음. 예 명령어열 $ date; who; pwd > out1.txt 명령어그룹 $ (date; who; pwd) > out2.txt pwd 의결과만 out1.txt 에저장됨. (date;who;pwd) 의모든결과가 out2.txt 에저장됨. 8

9 8.1 절 전면처리 전면처리란명령어를입력하면명령어가전면에서실행되며, 명령어실행이끝날때까지쉘이기다려주는명령어처리방식을말함. 전면에서실행되고있는명령어는필요에따라키보드와모니터로입출력을할수있음. 명령어를전면처리하면한순간에하나의명령어만실행할수있음. 9

10 8.1 절 명령어의강제종료, 정지, 계속 전면처리실행중인명령어를강제종료. ^C // 컨트롤키와 c 키를동시에누름. 전면처리실행중인명령어를정지시킨후, 후면으로보냄. ^Z // 컨트롤키와 z 키를동시에누름. 후면에서정지된명령어를전면 (foreground) 에서계속실행. $ fg 후면에서정지된명령어를후면 (background) 에서계속실행. $ bg 예 $ (sleep 100; echo done) ^C // 강제종료됨. $ (sleep 100; echo done) ^Z // 정지시킨후, 후면으로보냄. $ fg // 후면에서정지된명령어를전면에서계속실행. 10

11 8.1 절 후면처리 후면처리를이용하여특정명령어를후면에서처리하고, 전면에서는다른작업을수행함으로써동시에여러작업을수행할수있음. 사용법 $ 명령어 & // 후면처리할명령어뒤에 & 기호를붙여실행함. 시간이오래걸리는작업이나동시에여러작업을수행하고자할때후면처리를이용할수있음. 11

12 8.1 절 후면처리예제 두명령어를후면처리실행 $ (sleep 100; echo done) & // 100 초기다린후, 문자열 done 을출력함. [1] 8320 $ find. -name test.c -print & // 현재작업디렉터리에서 test.c 라는이름의 [2] 8325 파일을찾아있으면파일이름을출력함. 작업번호 PID 후면처리되고있는작업들의표시 $ jobs 후면처리에서전면처리로전환 $ fg % 작업번호 $ fg %1 후면처리입출력 후면처리의출력이전면처리의출력과뒤섞이지않도록하기위한조치 $ find. -name test.c -print > find.txt & // 후면처리의출력을파일에저장함. $ find. -name test.c -print mail chang & // 후면처리의출력을메일로전송함. 후면처리는키보드로부터입력을받을수없으므로, 텍스트파일로부터입력받아야함. $ wc < inputfile & // 텍스트파일로부터입력받음. 12

13 8.1 절 프로세스리스트 실행중인프로그램을프로세스 (process) 혹은작업 (job) 이라고함. 시스템은내부에서여러개의프로세스가동시에수행되고있음. 각각의프로세스는유일한프로세스번호 (PID) 를가짐. 프로세스를확인하고제어하기위한다양한명령어들 ps sleep kill wait exit 13

14 8.1 절 ps 명령어 ps 명령어는현재존재하는프로세스들의실행상태를요약해서출력함. 옵션을사용하지않으면, 나의프로세스에대한정보만을출력함. $ ps PID TTY TIME CMD pts/3 00:00:00 csh pts/3 00:00:00 ps $ ps aux (BSD 유닉스형식 ) a: 모든사용자의프로세스정보를출력 u: 프로세스에대한정보를자세히출력 x: 더이상제어터미널을갖지않은프로세스들도함께출력 $ ps -ef ( 시스템 V 형식 ) e: 모든사용자의프로세스정보를출력 f: 프로세스에대한정보를자세히출력 14

15 8.1 절 sleep 명령어 지정된시간만큼프로세스의실행을중지시킴. 사용법 $ sleep 초 예 $ (echo 시작 ; sleep 5; echo 끝 ) 시작 을출력한후, 5 초후에 끝 을출력함. sleep 명령어는여러명령어를수행할경우, 사용자의의도에따라시간적인간격을둘때유용함. 15

16 8.1 절 kill 명령어 kill 명령어는프로세스를강제적으로종료시키는명령어임. 프로세스번호 (PID) 또는작업번호를명령줄인수로적어실행하면해당프로세스를종료시킴. 사용법 $ kill [- 시그널 ] 프로세스번호 kill 명령어는수행중인특정프로세스에원하는시그널을보내는기능을수행함. 시그널번호를생략하면종료시그널을보내기때문에해당프로세스가종료됨. 예 $ (echo 시작 ; sleep 60; echo 끝 ) & [1] 1230 $ kill 1230 혹은 $ kill %1 후면처리시작 프로세스번호 (PID) 혹은작업번호를이용해강제종료시킬수있음. 16

17 8.1 절 wait 명령어 해당프로세스번호를갖는자식프로세스가종료될때까지기다리게하는명령어임. 프로세스번호를지정하지않으면모든자식프로세스가끝나기를기다림. 사용법 $ wait [ 프로세스번호 ] 예 $ (sleep 60; echo 1 번끝 ) & [1] 1231 $ echo 2 번끝 ; wait 1231; echo 3 번끝 2 번끝 1 번끝 3 번끝 $ (sleep 60; echo 1 번끝 ) & $ (sleep 60; echo 2 번끝 ) & $ echo 3 번끝 ; wait; echo 4 번끝 3 번끝 1 번끝 2 번끝 4 번끝 후면실행되는지정된자식프로세스가끝날때까지기다림. 후면실행되는두개의자식프로세스가모두끝날때까지기다림. 17

18 8.1 절 exit 명령어 쉘을종료하고종료코드 (exit code) 를부모프로세스에전달함. 사용법 $ exit [ 종료코드 ] 예 exit exit 1 18

19 8.2 절 프로그램의실행 사용자가프로그램을실행시키는방법은크게두가지임. 쉘프롬프트에서프로그램을지정하여실행시키는것 실행중인프로그램 ( 사용자프로세스 ) 내에서 exec() 시스템호출을이용하여다른프로그램을실행시키는것 위두방법은사실동일함. 쉘프로세스도이미실행중인프로세스이며, 사용자로부터입력받은실행할프로그램을 exec() 시스템호출을이용하여실행시키기때문. 모든프로그램은 exec() 시스템호출에의해서실행됨. 19

20 8.2 절 프로그램실행시작 C 프로그램을컴파일하면실행파일에는 C 프로그램코드와 C 시작루틴이포함됨. exec() 시스템호출 실행될프로그램의 C 시작루틴에게명령줄인수와환경변수를전달함. C 시작루틴 main 함수를호출하면서전달받은명령줄인수와환경변수를 main 함수에게다시전달함. main 함수의실행이끝나면반환값을받아 exit 함. exit( main( argc, argv) ); 20

21 8.2 절 명령줄인수 exec() 시스템호출은실행되는프로그램에게명령줄인수를전달함. 실행되는프로그램의 main() 함수는 argc 와 argv 를통해명령줄인수의개수와명령줄인수에대한포인터배열을전달받음. int main(int argc, char *argv[]); argc: 명령줄인수의개수 argv[]: 명령줄인수의리스트를나타내는포인터배열 21

22 8.2 절 args.c (p.252) #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i; for (i = 0; i < argc; i++) printf("argv[%d]: %s \n", i, argv[i]); exit(0); } 22

23 8.2 절 환경변수 환경변수는쉘이원래가지고있던것으로, 쉘이프로그램을실행시킬때프로세스에게넘겨줌. 전역변수 environ 을통해환경변수와값의리스트를포인터배열형태로전달함. 환경변수 = 값 23

24 8.2 절 environ.c (p.254) #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char **ptr; extern char **environ; for (ptr = environ; *ptr!= 0; ptr++) printf("%s \n", *ptr); exit(0); } 24

25 8.2 절 환경변수접근 getenv() 시스템호출을사용하면특정환경변수의값을가져올수있음. #include <stdlib.h> char *getenv(const char *name); 환경변수 name 의값을반환함. 해당이름의변수가없으면 NULL 을반환함. 예 getenv( USER ) 함수는 chang 을반환함. 25

26 8.2 절 printenv.c (p.254) #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char *ptr; ptr = getenv("home"); printf("home = %s \n", ptr); ptr = getenv("shell"); printf("shell = %s \n", ptr); ptr = getenv("path"); printf("path = %s \n", ptr); exit(0); } 26

27 8.2 절 환경변수설정, 삭제 아래의함수를이용하면특정환경변수의값을설정하거나지우는것도가능함. #include <stdlib.h> int putenv(const char *string); name=value 형태의문자열을입력받아서, 이를환경변수리스트에넣어줌. name이이미존재하면원래값을새로운값으로대체함. int setenv(const char *name, const char *value, int rewrite); 환경변수 name의값을 value로설정함. name이이미존재하는경우에는 rewrite 값이 0이아니면원래값을새로운값으로대체하고, rewrite 값이 0이면그대로둠. int unsetenv(const char *name); 환경변수 name을삭제함. 27

28 8.3 절 프로그램의종료방법 정상종료 (normal termination) 1. main() 함수의실행을마치고반환값을반환하면, C 시작루틴은이반환값을가지고 exit() 함수를호출함. 2. 프로그램내에서직접 exit() 함수를호출함. 3. 프로그램내에서직접 _exit() 함수를호출함. 비정상종료 (abnormal termination) 1. abort() 시스템호출함수에의한종료 프로세스에 SIGABRT 시그널을보내어프로세스를비정상적으로종료시킴. 2. 시그널에의한종료 실행중인프로세스가시그널을받으면갑자기비정상적으로종료하게됨. 28

29 8.3 절 exit(), _exit() 시스템호출함수 exit() 모든스트림을닫고 (fclose), 출력버퍼의내용을디스크에쓰는등의뒷정리 (fflush) 후, 프로세스를정상적으로종료시킴. 종료코드 (exit code) 를부모프로세스에게전달함. #include <stdlib.h> void exit(int status); 뒷정리를한후프로세스를정상적으로종료시킴. _exit() 뒷정리를하지않고즉시종료시킨다는점이 exit() 함수와다름. #include <stdlib.h> void _exit(int status); 뒷정리를하지않고프로세스를즉시종료시킴. 29

30 8.3 절 exit 처리기 exit() 시스템호출함수에의해프로세스가종료될때표준입출력의뒷정리가기본적으로수행됨. 사용자는기본적인뒷정리외에별도의뒷정리작업을하기위하여 atexit() 시스템호출함수를이용하여 exit 처리기함수를등록할수있음. #include <stdlib.h> int atexit(void (*func)(void)); exit 처리기로함수 func 를등록함. 등록이성공하면 0 을, 실패하면 0 이아닌숫자를반환함. exit 처리기는프로세스당 32 개까지등록이가능함. 등록된 exit 처리기는프로그램이종료될때등록된역순으로호출되어실행됨. 30

31 8.3 절 atexit.c (p.259) #include <stdio.h> #include <stdlib.h> static void exit_handler1(void); static void exit_handler2(void); int main(void) { if (atexit(exit_handler1)!= 0) perror("exit_handler1 등록할수없음 "); if (atexit(exit_handler2)!= 0) perror("exit_handler2 등록할수없음 "); printf("main 끝 \n"); exit(0); } static void exit_handler1(void) { printf(" 첫번째 exit 처리기 \n"); } static void exit_handler2(void) { printf(" 두번째 exit 처리기 \n"); } 31

32 8.3 절 프로그램의시작과종료과정 32

33 8.4 절 프로세스 ID 프로그램이실행되면프로세스가됨. 한프로그램은여러번실행될수있으므로, 한프로그램으로부터여러개의프로세스가생성될수있음. 각프로세스는프로세스를구별하는번호인프로세스 ID (PID) 를가짐. 모든프로세스는다른프로세스에의해생성됨. 자신을생성해준프로세스를부모프로세스라고함. PID 관련시스템호출 int getpid( ); 프로세스 ID 를반환함. Int getppid( ); 부모프로세스의프로세스 ID 를반환함. 33

34 8.4 절 pid.c (p.261) #include <stdio.h> #include <unistd.h> int main() { int pid; printf(" 나의프로세스번호 : [%d] \n", getpid()); printf(" 내부모프로세스번호 : [%d] \n", getppid()); } 34

35 8.4 절 chdir() 시스템호출 각프로세스는현재작업디렉터리를가짐. int chdir(char* pathname); chdir() 시스템호출은현재작업디렉터리를매개변수가지정한경로 pathname 으로변경함. chdir() 시스템호출이성공하려면그디렉터리에대한실행권한이있어야함. 35

36 8.4 절 프로세스의사용자 ID 와그룹 ID 프로세스는프로세스 ID 외에도다양한 ID 를가짐 프로세스 ID (PID) 프로세스사용자 ID 프로세스실제사용자 ID 프로세스유효사용자 ID 프로세스그룹 ID 프로세스실제그룹 ID 프로세스유효그룹 ID 프로세스를실행시킨사용자 ID 현재유효한사용자 ID 프로세스를실행시킨사용자의그룹 ID 현재유효한사용자의그룹 ID 이러한여러가지 ID 는프로세스가수행할수있는권한을검사하는데사용됨. 실제사용자 ID 와유효사용자 ID 는일반적으로같지만, 특별한경우에는달라질수있음. 프로세스실제사용자 ID 가 cju 이고프로세스유효사용자 ID 가 root 이면, root 소유의파일에접근이가능함. 36

37 8.4 절 다양한 ID 를읽어오는시스템호출 #include <sys/types.h> #include <unistd.h> uid_t getuid( ); 프로세스의실제사용자 ID를반환함. uid_t geteuid( ); 프로세스의유효사용자 ID를반환함. uid_t getgid( ); 프로세스의실제그룹 ID를반환함. uid_t getegid( ); 프로세스의유효그룹 ID를반환함. 37

38 8.4 절 다양한 ID 를변경하는시스템호출 #include <sys/types.h> #include <unistd.h> int setuid(uid_t uid); 프로세스의실제사용자 ID를 uid로변경함. int seteuid(uid_t uid); 프로세스의유효사용자 ID를 uid로변경함. int setgid(gid_t gid); 프로세스의실제그룹 ID를 gid로변경함. int setegid(gid_t gid); 프로세스의유효그룹 ID를 gid로변경함. 38

39 8.4 절 uid.c (p.263) #include <stdio.h> #include <unistd.h> #include <pwd.h> #include <grp.h> int main() { int pid; } 사용자 ID 를반환함. 사용자 ID( 숫자 ) 에해당하는사용자데이터베이스를찾아, 그속에서변수 pw_name에접근함. printf(" 나의실제사용자 ID : %d(%s) \n", getuid(), getpwuid(getuid())->pw_name); printf(" 나의유효사용자 ID : %d(%s) \n", geteuid(), getpwuid(geteuid())->pw_name); printf(" 나의실제그룹 ID : %d(%s) \n", getgid(), getgrgid(getgid())->gr_name); printf(" 나의유효그룹 ID : %d(%s) \n", getegid(), getgrgid(getegid())->gr_name); 39

40 8.4 절 실제사용자 ID 와유효사용자 ID 가다른경우 실행파일의 set-user-id 라는특별한실행권한을설정하면, 프로세스의유효사용자 ID 가실행파일의소유자로바뀜. 결과적으로프로세스가실행되는동안그파일의소유자권한을갖게됨. 예 /usr/bin/passwd 명령어는 set-user-id 실행권한이설정된실행파일로서, 소유자는 root 임. 일반사용자가이파일을실행하게되면이프로세스의실제사용자 ID 는사용자이지만, 프로세스의유효사용자 ID 는 root 임. 따라서이프로세스는 /etc/passwd 처럼 root 만수정할수있는파일에접근하여파일을수정하는것이가능함. 40

41 8.4 절 set-user-id 권한의실행파일 set-user-id 실행권한은심볼릭모드로 's' 로표현됨. $ ls l /bin/su /usr/bin/passwd 32 -rwsr-xr-x. 1 root root :50 /bin/su 28 -rwsr-xr-x. 1 root root :00 /usr/bin/passwd set-user-id 실행권한의설정방법 $ chmod 4755 file 명 set-group-id 실행권한의설정방법 $ chmod 2755 file 명 41

42 8.4 절 예 42

43 8.5 절 프로세스이미지 프로그램을실행하기위해서는텍스트 ( 실행코드 ), 데이터, 힙, 스택등의영역을위한메모리가필요하고, 이러한메모리배치를프로세스이미지라고함. 프로세스이미지를구성하는각영역의역할 텍스트 (text) 프로세스가실행하는실행코드를저장함. 데이터 (data) 전역변수 (global variable) 및정적변수 (static variable) 를저장함. 힙 (heap) 동적메모리할당을위한영역으로, malloc() 함수를호출하면이영역에서메모리를할당해줌. 스택 (stack) 함수호출의구현에이용되는영역으로, 함수가호출될때마다해당함수의지역변수, 매개변수, 반환주소, 반환값등을포함하는활성레코드 (activation record) 가저장됨. U-영역 (user-area) 열린파일의디스크립터, 현재작업디렉터리등과같은프로세스의정보를저장하는영역임. ( 텍스트 ) 43

44 8.5 절 size 명령어 실행파일의텍스트, 데이터등의크기를알려줌. ( 텍스트 ) 44

45 질문 Q&A 45

제8장 프로세스

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

More information

제1장 Unix란 무엇인가?

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

More information

리눅스 프로세스 관리

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

More information

제9장 프로세스 제어

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

More information

<C1A63130C0E5C7C1B7CEBCBCBDBA2E687770>

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

More information

제2장 리눅스 사용

제2장 리눅스 사용 제 2 장리눅스사용 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 목차 기본명령어 파일및디렉터리 파일속성 입출력재지정및파이프 후면처리및프로세스 문서편집기 2 2.1 절 기본명령어 $ date // 날짜및시간을출력함. $ hostname // 호스트명을출력함. $ uname // 시스템정보를출력함. $ who // 현재로그인한사용자정보를출력함. $ ls //

More information

슬라이드 1

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

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

임베디드시스템설계강의자료 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

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D>

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

More information

2009년 상반기 사업계획

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

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

PowerPoint 프레젠테이션

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

More information

chap2

chap2 Lecture 02: 리눅스사용 상지대학교컴퓨터공학과고광만 kkman@sangji.ac.kr http://compiler.sangji.ac.kr 2018 2.1 기본명령어 간단한명령어사용 $ date $ hostname $ uname $ who $ ls $ clear $ passwd 3 2.2 파일및디렉터리 파일의종류 l 일반파일 (ordinary file)

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

Microsoft PowerPoint - 10_Process

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

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

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

PowerPoint 프레젠테이션

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

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

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

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

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

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

<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

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

제2장 유닉스 사용

제2장 유닉스 사용 1 제 2 장유닉스사용 2 2.1 기본명령어 간단한명령어사용 $ date : 현재날짜및시간을확인 $ hostname : 사용하고있는호스트이름을확인 $ uname : 현재사용하고있는운영체제를확인 $ who : 현재로그인한사용자를확인 $ ls : 현재디렉터리내의파일목록을확인 $ clear : 화면을깨끗이하고화면의첫째줄에프롬프트를표시 $ passwd : 패스워드를변경

More information

chap12(process).hwp

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

More information

Microsoft PowerPoint - u5.pptx

Microsoft PowerPoint - u5.pptx 5.1 셸의기능과종류 5. 셸 (shell) 셸 (shell) 사용자와 OS 사이의인터페이스프로그램 셸의기본기능 명령어해독기 (command interpreter) 역할수행 셸의종료 ^D( 입력끝 ), exit 명령어, 또는 logout ( 로그인셸만해당 ) 셸의추가기능 셸프로그램처리기능 shell script 표준입출력방향전환, 파이프등의다양한기능 shell의종류

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

2009년 상반기 사업계획

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

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

<4D F736F F F696E74202D20BFEEBFB5C3BCC1A6BDC7BDC D31C7D0B1E229202D20BDA92E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BFEEBFB5C3BCC1A6BDC7BDC D31C7D0B1E229202D20BDA92E BC8A3C8AF20B8F0B5E55D> 쉘 (Shell) 환경 운영체제실습 목차 Ⅴ. 쉘 (shell) 환경 5.1 쉘 (shell) 이란? 5.2 쉘 (shell) 기능 5.3 쉘 (shell) 변수 5.4 기타기능 5.5 쉘 (shell) 프로그래밍 5.1 쉘 (shell) 이란? 쉘 (Shell) 사용자가입력한명령어를해석해주는명령어해석기 (Command interpreter) 사용자와운영체제

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

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

제1장 Unix란 무엇인가?

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

More information

제12장 파일 입출력

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

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

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBABFCD20BBE7BFEBC0DA20B8EDB7C920C0CDC8F7B1E22E >

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBABFCD20BBE7BFEBC0DA20B8EDB7C920C0CDC8F7B1E22E > 8 장. 프로세스와사용자명령익히기 Contents 학습목표 프로세스의개념을이해한다 프로세스관련유닉스명령의사용방법을익힌다 포그라운드처리와백그라운드처리의차이를이해한다 사용자정보를보는유닉스명령의사용방법을익힌다 내용 프로세스의개념과종류 프로세스관리명령 포그란운드와백그라운드프로세스 사용자정보보기 01. 프로세스의개념과종류 프로세스 실행중인프로그램 종류 시스템프로세스

More information

슬라이드 1

슬라이드 1 정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함

More information

Microsoft PowerPoint - 02-Shell-Programming

Microsoft PowerPoint - 02-Shell-Programming 2. 쉘프로그래밍 상명대학교소프트웨어학부 쉘 (Shell) 쉘 : 명령어해석기 단말기나파일로부터입력된명령을해석하여적절한명령을실행 시스템환경변경, 명령어입력편의를제공 쉘의종류 Bourne Shell(sh) /bin/sh Korn Shell(ksh) /bin/ksh C Shell(csh) /bin/csh Bourne Again Shell(bash) /bin/bash

More information

PowerPoint 프레젠테이션

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

More information

Microsoft PowerPoint UNIX Shell.ppt

Microsoft PowerPoint UNIX Shell.ppt 컴퓨터특강 () 2006 년봄학기 문양세강원대학교컴퓨터과학과 Shell? Shell이란명령어해석기 (Command Processor or Command Interpreter): 사용자가입력하는명령을읽고해석하는프로그램프로그래밍언어 : Shell이해석할수있는스크립트 (shell script) 라는프로그램을작성유닉스를사용하는데있어주요한인터페이스 Page 2 1 Shell

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 15 고급프로그램을 만들기위한 C... 1. main( ) 함수의숨겨진이야기 2. 헤더파일 3. 전처리문과예약어 1. main( ) 함수의숨겨진이야기 main( ) 함수의매개변수 [ 기본 14-1] main( ) 함수에매개변수를사용한예 1 01 #include 02 03 int main(int argc, char* argv[])

More information

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다 10 강. 쉘스크립트 쉘스크립트 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다른운영체제로이식되지않음 -스크립트언어를사용하면컴파일과정이없고인터프리터가소스파일에서명령문을판독하여각각의명령을수행

More information

Microsoft PowerPoint UNIX Shell.pptx

Microsoft PowerPoint UNIX Shell.pptx UNIX SHELL 문양세강원대학교 IT 특성화대학컴퓨터과학전공 Shell? Shell 이란명령어해석기 (Command Processor or Command Interpreter): 사용자가입력하는명령을읽고해석하는프로그램 프로그래밍언어 : Shell 이해석할수있는스크립트 (shell script) 라는프로그램을작성 유닉스를사용하는데있어주요한인터페이스 Page

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

11장 포인터

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

More information

설계란 무엇인가?

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

More information

제1장 Unix란 무엇인가?

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

More information

chap7.key

chap7.key 1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드

More information

PowerPoint 프레젠테이션

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

More information

Microsoft PowerPoint - C프로그래밍-chap15.ppt [호환 모드]

Microsoft PowerPoint - C프로그래밍-chap15.ppt [호환 모드] Chapter 15 문자열 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 문자의집합체 문자열의정의 일련의문자 C 언어에서문자열앞뒤에인용부호 를이용 문자와문자열과의차이 문자열의저장 (1) 배열을이용하는방법 문자열상수 c c language 를저장하는문자열배열 항상문자열마지막에는 NULL문자를넣어야함 (2)

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

좀비프로세스 2

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

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 06. 프로세스관리하기 00. 개요 01. 프로세스의개념 02. 프로세스관리명령 03. 포그라운드, 백그라운드프로세스와작업제어 04. 작업예약 프로세스가무엇인지설명할수있다. 프로세스목록을확인하고특정프로세스를검색할수있다. 프로세스를강제로종료할수있다. 프로세스관리도구로전체프로세스의상태를확인할수있다. 포그라운드와백그라운드작업의차이를설명할수있다. 백그라운드로작업을실행하고포그라운드로변환할수있다.

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

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

슬라이드 1

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

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

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다. / /bin/ /home/ /home/taesoo/ /home/taesoo/downloads /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자 (t

학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다. / /bin/ /home/ /home/taesoo/ /home/taesoo/downloads /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자 (t 학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다. / /bin/ /home/ /home/taesoo/ /home/taesoo/downloads /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자 (taesoo) 가터미널에서다음 ls 명령입력시화면출력을예측하시오. $ ls /usr/.. $

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

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

학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다고가정하자. / /bin/ /home/ /home/taesoo/ /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자가터미널에서다음 ls 명령입력시화면출력

학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다고가정하자. / /bin/ /home/ /home/taesoo/ /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자가터미널에서다음 ls 명령입력시화면출력 학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다고가정하자. / /bin/ /home/ /home/taesoo/ /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자가터미널에서다음 ls 명령입력시화면출력을예측하시오. $ cd /usr $ ls..? $ ls.? 2. 다음그림은어떤프로세스가다음코드를수행했다는가정에서도시되었다.

More information

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - chap12-고급기능.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

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 소켓 2 1 소켓 클라이언트 - 서버모델 네트워크응용프로그램 클리이언트 - 서버모델을기반으로동작한다. 클라이언트 - 서버모델 하나의서버프로세스와여러개의클라이언트로구성된다. 서버는어떤자원을관리하고클라이언트를위해자원관련서비스를제공한다. 3 소켓의종류 소켓 네트워크에대한사용자수준의인터페이스를제공 소켓은양방향통신방법으로클라이언트 - 서버모델을기반으로프로세스사이의통신에매우적합하다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 12 표준입출력과파일입출력... 1. 표준입출력함수 2. 파일입출력함수 1. 표준입출력함수 표준입출력함수 표준입력 (stdin, Standard Input) : 키보드입력 표준출력 (stdout, StandardOutput) : 모니터출력 1. 표준입출력함수 서식화된입출력함수 printf(), scanf() 서식의위치에올수있는것들 [ 기본 11-1]

More information

Linux SHELL

Linux SHELL Linux SHELL SHELL? 리눅스는크게커널, 쉘, 사용자프로그램으로분류 커널은운영체제의핵심으로서메모리나프로세서등을관리하며시스템을제어하는역할을함 사용자프로그램은일반적으로사용하는 SSH, FTP, HTTP 등의프로그램등을말함 쉘은커널과직접적으로연결되어사용자가프로그램에서실행시킨명령어를해석하여그결과를커널로보내는역할을함 ( 명령어해석기 ) 다양한종류가있으며사용자의활용도와사용목적에따라각각에맞는쉘을선택해서사용할수있음

More information

Adobe Flash 취약점 분석 (CVE-2012-0754)

Adobe Flash 취약점 분석 (CVE-2012-0754) 기술문서 14. 08. 13. 작성 GNU C library dynamic linker $ORIGIN expansion Vulnerability Author : E-Mail : 윤지환 131ackcon@gmail.com Abstract 2010 년 Tavis Ormandy 에 의해 발견된 취약점으로써 정확한 명칭은 GNU C library dynamic linker

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

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

Linux SHELL

Linux SHELL Linux SHELL SHELL? 리눅스는크게커널, 쉘, 사용자프로그램으로분류 커널은운영체제의핵심으로서메모리나프로세서등을관리하며시스템을제어하는역할을함 사용자프로그램은일반적으로사용하는 SSH, FTP, HTTP 등의프로그램등을말함 쉘은커널과직접적으로연결되어사용자가프로그램에서실행시킨명령어를해석하여그결과를커널로보내는역할을함 ( 명령어해석기 ) 다양한종류가있으며사용자의활용도와사용목적에따라각각에맞는쉘을선택해서사용할수있음

More information

Chapter 06. 프로세스관리하기

Chapter 06. 프로세스관리하기 Chapter 06. 프로세스관리하기 00. 개요 01. 프로세스의개념 02. 프로세스관리명령 03. 포그라운드, 백그라운드프로세스와작업제어 04. 작업예약 프로세스가무엇인지설명할수있다. 프로세스목록을확인하고특정프로세스를검색할수있다. 프로세스를강제로종료할수있다. 프로세스관리도구로전체프로세스의상태를확인할수있다. 포그라운드와백그라운드작업의차이를설명할수있다. 백그라운드로작업을실행하고포그라운드로변환할수있다.

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

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

untitled

untitled int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015

More information

고급 프로그래밍 설계

고급 프로그래밍 설계 UNIT 11 프로세스 광운대학교로봇 SW 교육원 최상훈 main 함수 2 프로세스의시작 exec 함수 ( 시스템콜 ) 호출 커널에의해실행됨 시동루틴 (start-up routine) main함수호출되기젂에호출 시동루틴의주소가프로그램의시작주소 링커에의해프로그램실행파일에설정됨 시동루틴의역핛 실행에필요핚제반사항을준비 커널로부터명령줄인수와홖경변수를젂달받음 main

More information

Microsoft PowerPoint APUE(Intro).ppt

Microsoft PowerPoint APUE(Intro).ppt 컴퓨터특강 () [Ch. 1 & Ch. 2] 2006 년봄학기 문양세강원대학교컴퓨터과학과 APUE 강의목적 UNIX 시스템프로그래밍 file, process, signal, network programming UNIX 시스템의체계적이해 시스템프로그래밍능력향상 Page 2 1 APUE 강의동기 UNIX 는인기있는운영체제 서버시스템 ( 웹서버, 데이터베이스서버

More information

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

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

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

<B1E2BCFAB9AEBCAD5FB9DABAB4B1D45F F F64746F72732E687770>

<B1E2BCFAB9AEBCAD5FB9DABAB4B1D45F F F64746F72732E687770> 기술문서 09. 11. 3. 작성 Format String Bug 에서 dtors 우회 작성자 : 영남대학교 @Xpert 박병규 preex@ynu.ac.kr 1. 요약... 2 2. d to r 이란... 3 3. 포맷스트링... 4 4. ro o t 권한획득... 7 5. 참고자료... 1 0-1 - 1. 요약 포맷스트링버그 (Format String bug)

More information

PowerPoint Presentation

PowerPoint Presentation #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

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

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문 1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문 1. 표준입출력 표준입출력 입력 : 키보드, scanf 함수 출력 : 모니터, printf 함수문제 : 정수값 2개를입력받고두값사이의값들을더하여출력하라. #include int main(void) int Num1, Num2; int

More information

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2 제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.

More information

11장 포인터

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

ch15

ch15 쉽게풀어쓴 C 언어 Express 제 14 장포인터활용 C Express 이중포인터 이중포인터 (double pointer) : 포인터를가리키는포인터 int i = 10; int *p = &i; int **q = &p; // i 는 int 형변수 // p 는 i 를가리키는포인터 // q 는포인터 p 를가리키는이중포인터 이중포인터 이중포인터의해석 이중포인터 //

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 08 함수 01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수 함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다. 1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4 1.2

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Text-LCD Device Control - Device driver Jo, Heeseung M3 모듈에장착되어있는 Tedxt LCD 장치를제어하는 App 을개발 TextLCD 는영문자와숫자일본어, 특수문자를표현하는데사용되는디바이스 HBE-SM5-S4210 의 TextLCD 는 16 문자 *2 라인을 Display 할수있으며, 이 TextLCD 를제어하기위하여

More information

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap11-포인터의활용.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 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

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

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular

More information