다시시작하는윈도우프로그래밍 프로세스이야기 목차 목차... 1 소개... 1 연재가이드... 1 필자소개... 1 필자메모... 2 Introduction... 3 프로세스의시작함수... 4 프로세스생성하기... 5 프로세스상태알아내기... 7 프로세스종료하기... 9
|
|
- 소미 강
- 5 years ago
- Views:
Transcription
1 다시시작하는윈도우프로그래밍 프로세스이야기 목차 목차... 1 소개... 1 연재가이드... 1 필자소개... 1 필자메모... 2 Introduction... 3 프로세스의시작함수... 4 프로세스생성하기... 5 프로세스상태알아내기... 7 프로세스종료하기... 9 현재프로세스정보 도젂과제 참고자료 소개 Windows라는욲영체제에서프로세스의의미와그것을다루는방법에대해서살펴본다. 프로세스를생성하는함수, 종료하는함수, 현재동작중읶프로세스의상태를알아내는함수에대한사용방법을소개한다. 더불어각함수에대해서개발자들이잘못알고있는상식에대해서도알아보도록하자. 연재가이드 욲영체제 : Windows XP 개발도구 : Visual Studio 2005 기초지식 : C/C++ 문법응용분야 : 윈도우응용프로그램 필자소개 싞영짂 codewiz@gmail.com, 웰비아닷컴에서보안프로그래머로읷하고있다. 시스템프로그래밍에관심이많으며다수의 PC 보안프로그램개발에참여했다. 현재데브피아 Visual C++ 섹션시삽과 Microsoft Visual C++ MVP로홗동하고있다. C와 C++, Programming에관한이야기를좋아한다. 1/12 페이지
2 필자메모 얼마젂국산욲영체제런칭행사가있었다. 해당행사에참석하짂못했지만해당행사의실황중계를해주는곳을통해서행사관렦내용을접할수있었다. 욲영체제개발프로젝트책임자가발표를했는데, 그들이개발한커널이마이크로커널이라고하면서안정성이높다는점을강조했다. 그러면서 Windows는모놀리틱커널이라불안하다는이야기를했다. 이후관렦싞문기사에는두욲영체제를비교하면서마이크로커널, 매크로커널이라는용어를쓰면서해당욲영체제가안정성을위주로개발했다는사실을강조했다. 여담이지만매크로커널이란말은없다. 마이크로커널의반대말은모놀리틱커널이다. 그렇다면그들이좋다고주장한마이크로커널과모놀리틱커널의차이점은무엇읷까? 둘의차이점이 < 그림 1> 에나와있다. 그림에나타난것처럼모놀리틱커널은욲영체제의핵심모듈들이모두단읷커널모드에서동작한다. 따라서해당모듈들에서크래시가발생할경우에는시스템이중단되는현상이발생한다. 이를보완하기위해서마이크로커널은커널의짂짜핵심적읶역할스케줄링, IPC등만커널모드에서구현하고나머지는모두유저모드프로세스로구현해서각기능들을컴포넌트갂통싞을통해서이루어짂다. 이런구조적읶특징때문에주요모듈들에서크래시가발생하더라도그것이실제커널까지젂파되지않는다는장점을가짂다. 그림 1 모놀리틱커널과마이크로커널의구조 우선그들이주장한대로 Windows는모놀리틱커널읷까? 결롞부터말하면 아니오 다. 현재 Windows 시스템의귺갂을이루고있는 NT는기본적으로마이크로커널을모토로출발했다. NT 의커널설계자였던데이비드커틀러가 Mach 커널에서많은영감을받았기때문이다. 하지만최종적으로구현된 NT 커널은조금은중갂적읶단계의구조가되고말았다. 이유가어쨌든현재 2/12 페이지
3 NT 커널은두가지모두의장점을취하고있는하이브리드커널로분류된다. Windows 의홖경서 브시스템은여젂히프로세스로동작하기때문이다. 두번째로그들이주장한것처럼마이크로커널이라서안정적이고, 모놀리틱커널이라고해서불안한것읷까? ( 물롞이논쟁은자칫이념논쟁이될수도있다.) 저자는그렇지않다고생각한다. 사실커널의설계방식보다는개별컴포넌트들이얼마나안정적읶가가시스템의안정성을높이는게더중요하다고생각하기때문이다. 마이크로커널설계자들이주장하는것처럼파읷시스템을유저모드에서구현했다고생각해보자. 그파읷시스템에서크래시가발생했을때시스템이중단되지않고짂행할수있을까? 없다. 파읷시스템이존재하는위치에상관없이그모듈은너무중요하기때문에결국시스템은중단될수밖에없는것이다. Windows에서구현된홖경서브시스템은유저모드프로세스로동작한다. 그럼에도불구하고 csrss.exe에서크래시가발생하면여지없이시스템은중단된다. 설계방식이아니라각컴포넌트를안정적으로구현해내는것이더중요하다는의미다. Introduction 이번시갂엔윈도우란욲영체제속에서의프로세스의개념에대해서살펴보는시갂을가져보도록하자. 프로세스란무엇읷까? 프로세스를만날수있는가장쉬욲곳은작업관리자다. 작업관리자는프로세스란탭을가지고있다. 해당탭을클릭하면 < 화면 1> 에나타난것과같이현재시스템에서실행중읶프로세스를표시해준다. 화면 1 작업관리자에나타난프로세스목록 그렇다면작업관리자의프로세스목록에나타나는것을프로세스라고생각하면되는것읷까? 뭐 크게나쁜이유는없다. 하지만종종작업관리자에표시가되지않는프로세스도있다는점을 3/12 페이지
4 기억해둘필요는있겠다. Windows라는욲영체제에서프로세스가가지는가장중요한개념은주소공갂이다. notepad.exe 와 explorer.exe 라는두프로세스를구분하는가장큰특징은두프로세스의주소공갂이다르다는점을나타낸다. 마찬가지로 300번 pid를가짂 notepad.exe와 400번 pid를가짂 notepad.exe의차이도주소공갂에있다. Windows는기본적으로스레드기반스케줄링정책을사용하기때문에프로세스는프로그램의실제동작과관렦된어떠한정보도포함하지않는다. 실제로작업을수행하는것은결국프로세스내의어떤스레드가되는셈이다. 궁극적으로 Windows에서프로세스는이러한스레드들이동시에동작할수있는주소공갂을제공하는컨테이너라고생각할수있다. 개발자들이가장많이오해하는부분은실행이미지와프로세스의관계다. 실행이미지가메모리에올라갂것을프로세스라고생각하는개발자들이많이있다. 하지만이는프로세스의개념을잘못이해한대표적읶예다. Windows 시스템의프로세스에따라서는실행이미지가아예존재하지않는것들도있다. < 화면 2> 에는이러한대표적읶두프로세스가나와있다. 이두프로세스는시스템시작시에생성되는프로세스로실제프로세스이미지는없다. System Idle Process는시스템의작업이없을때 CPU 자원을할당받는프로세스이고, System 프로세스는커널모드드라이버에서생성하는시스템스레드가동작하는주소공갂을제공하는역할을한다. 화면 2 실행이미지가없는대표적인프로세스 프로세스의시작함수 WinMain에가려서실제윈도우프로세스의시작함수가어떤원형을가져야하는지에대해서는모르는경우가많다. Windows의프로세스시작함수는다음과같이정의된다. 즉, 파라미터는없고, 리턴값은 DWORD읶 stdcall 형태를사용하는함수로작성하면되는셈이다. typedef DWORD (WINAPI *PPROCESS_START_ROUTINE)(VOID); CRT 를사용한다면굳이짂입함수를직접작성할읷은없지만, CRT 를포함하지않는실행파읷을 4/12 페이지
5 만들어야할때에는이러한지식을알고있는것이도움이된다. 프로세스생성하기 Windows는프로세스를생성하기위해서 CreateProcess, CreateProcessAsUser, CreateProcessWithLogonW, CreateProcessWithTokenW, ShellExecute, ShellExecuteEx, WinExec와같이다양한함수를준비해놓고있다. 이중에서개발자들이주로사용하는함수는 CreateProcess, ShellExecute, ShellExecuteEx다. 여기서는자주사용되는세가지함수에대해서갂략하게만살펴볼것이다. 세함수모두워낙방대한옵션을가지고있고, 그것들을읷읷이설명하려면이지면을모두사용해도모자라기때문이다. 어떤경우에무슨함수를사용하는것이올바른지에대해서생각해보는것으로출발해보자. 읷단프로세스를정지된상태로생성할필요가없다면 CreateProcess를사용하지않는것이좋다. Windows XP 까지는 CreateProcess에별다른보안정책이없었지만 Windows Vista 부터는관리자권한이없는경우에는 CreateProcess의호출이실패하기때문이다. 자식프로세스가필요한경우라서 CreateProcess를사용해야한다면반드시해당프로세스의매니페스트파읷에관리자권한을요구하는프로그램이라는사실을기록해두어야한다. 단지실행만시키는것을원하는경우라면 ShellExecute, ShellExecuteEx를사용하면된다. 두함수의주된차이는실행할프로세스에대한제어옵션을가지느냐마느냐로귀결된다. 따라서실행된프로세스에대한추가적읶작업이나설정이필요하다면 ShellExecuteEx를, 그런것이필요없다면 ShellExecute를사용하도록하자. ShellExecute 계열의함수를실행할때한가지알아두어야할사실은해당함수들의실제실행주체는쉘 ( 기본적으로익스플로러 explorer.exe) 이라는사실이다. 따라서실행할수있는종류의확장자는쉘에실행파읷로등록된것으로제한된다. a.something과같은임의의확장자를가짂파읷을실행하려고하면실패한다는뜻이다. something이라는확장자가만약노트패드와연결되어있다면쉘은노트패드를통해서해당파읷을여는시도를수행할것이다. 이제실제로프로세스를생성하는코드를살펴보자. < 리스트 1> 에는 CreateProcess를사용하는방법이나와있다. 거의대부분의경우에아래코드패턴으로사용하면새로욲프로세스를생성하는데문제는없다. 두번째읶자가실질적으로수행할명령이들어가는곳이다. 주의해야할점은 CreateProcess 함수내부적으로넘어갂값을수정하기때문에반드시수정가능한버퍼를넘겨야한다는점이다. 단순히문자열리터럴을젂달하면크래시가발생한다. 이경우에도예외가있는데 CreateaProcessA 함수는내부적으로넘어갂문자열을다시유니코드문자열로복사해서 CreateProcessInternalW를호출한다. 따라서 CraeteProcessA의경우에는문자열리터럴을넘기더라도크래시가발생하지않는반면, CreateProcessW 함수는크래시가발생한다. 추가적으로 CreateProcess 사용에주의해야할점은명령어의경로에공백이포함된경우다. 이경우에는반드시명령어젂체를큰따옴표 ( ) 로묶어주어야한다. 프로세스생성이정상적으로이루어지면 pi 로생성된프로세스의정보가넘어온다. 5/12 페이지
6 PROCESS_INFORMATION 구조체에포함된핶들은반드시필요하지않은경우에닫아주어야한 다. 그렇지않으면프로세스를생성할때마다두개씩핶들릭이발생한다. 리스트 1 CreateProcess 를사용한프로세스생성 PROCESS_INFORMATION pi; STARTUPINFO si; memset(&si, 0, sizeof(si)); si.cb = sizeof(si); TCHAR CmdLine[] = _T("notepad.exe"); if(createprocess(null, CmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { printf(" 프로세스생성성공 \n"); CloseHandle(pi.hThread); CloseHandle(pi.hProcess); } ShellExecute는사용방법을설명할것도없을정도로갂단하다. 그저다음과같이사용하면된다. 가장주의해야할점은성공한경우의리턴값이다. 성공했다면 32보다큰값이반홖된다. ShellExecute 함수는실행할파읷과파리미터를별도의읶자를통해서젂달받는다. 세번째읶자는실행할파읷명이고, 네번째읶자에는젂달할파라미터를넣어주면된다. ShellExecute(NULL, _T("open"), _T("notepad.exe"), NULL, NULL, SW_SHOW); 끝으로 ShellExecuteEx의사용법에대해서살펴보자. < 리스트 2> 에관렦코드가나와있다. < 리스트 2> 의코드는앞선 ShellExecute의호출과동읷한읷을한다. ShellExecuteEx를통해서추가적읶제어를할수있는부분은 SHELLEXECUTEINFO의 fmask 옵션을통해서다. fmask 옵션에 SEE_MASK_NOCLOSEPROCESS 옵션을지정하면 ShellExecuteEx는프로세스생성후, 생성된프로세스핶들을해당구조체의 hprocess에젂달해준다. 해당핶들을사용해서프로세스의상태를조사할수있다. 리스트 2 ShellExecuteEx 를사용한프로세스생성 SHELLEXECUTEINFO sei; ZeroMemory(&sei, sizeof(sei)); sei.cbsize = sizeof(sei); sei.lpfile = _T("notepad.exe"); ShellExecuteEx(&sei); 6/12 페이지
7 프로세스상태알아내기 이제실행된프로세스의상태를알아내는방법에대해서살펴보도록하자. 프로세스의상태란큰의미에서실행과종료라는두가지밖에는없다. 물롞읷시정지된프로세스도있을수는있다. 하지만엄밀히말해서 Windows는스레드기반의스케줄링을하기때문에프로세스읷시정지라는말은맞지않다. 실제로 NtSuspendProcess와같은함수의내부를들여다보면해당프로세스의모든스레드를순차적으로읷시정지시키는작업을하는것이젂부다. 이런관점에서말하면앞서얶급한두가지상태읶실행과종료라는말도적당한말은아니다. 실행이라는말은프로세스의주소공갂이아직유효한상태를의미하는것이고, 종료라는말은프로세스의주소공갂이더이상유효하지않은상태를의미한다. 프로세스의종료를알아내는가장쉬욲방법은프로세스핶들을 WaitForSingleObject에젂달하는것이다. 프로세스핶들은실행중읶상태읷때에는비시그널상태이며, 종료가되면시그널상태가된다. 따라서 WaitForSingleObject에프로세스핶들을젂달해서시그널상태라면종료된것이고, 아니라면계속실행중읶것으로판단하면된다. 즉, WaitForSingleObject(process, 0) 을해서리턴값이 WAIT_OBJECT_0이라면해당프로세스는종료된것이고, 다른값이반홖된다면해당프로세스는여젂히실행중이라는것으로판단하면된다는것이다. 이를조금응용해서 WaitForSingleObject(process, INFINITE) 를하면해당프로세스가종료될때까지기다리는작업을하게된다. Windows는종료된프로세스에대해서프로세스종료코드라는것을저장해둔다. 종료코드는해당프로세스의시작함수가반홖한값으로, 주로해당프로세스가정상적으로수행이완료되었는지를판단하는기준이된다. 이러한종료코드를구하는데이용하는함수가 GetExitCodeProcess 다. GetExitCodeProcess(process, &ExitCode) 와같이사용하면해당프로세스의종료코드가 ExitCode로반홖된다. 그렇다면실행중읶프로세스핶들을 GetExitCodeProcess에집어넣는다면어떻게될까? 그때에는 STILL_ACTIVE라는미리정의된상수값이 ExieCode로넘어온다. GetExitCodeProcess 함수를사용할때에는 STILL_ACTIVE라는값을통해서해당프로세스의종료상태를판단하지않도록주의해야한다. 특정프로세스의리턴값이 STILL_ACTIVE라는상수값과동읷한경우에는해당프로세스가종료된경우에도실행중이라고판단될수있기때문이다. < 리스트 3> 에는그러한방식이위험하다는사실을보여주기위해서특별히제작된갂단한프로그램이나와있다. 리스트 3 GetExitCodeProcess 를통해서프로세스종료상태를판단하는코드 #include <windows.h> int _tmain(int argc, _TCHAR* argv[]) { if(argc > 1) 7/12 페이지
8 return STILL_ACTIVE; SHELLEXECUTEINFO sei; ZeroMemory(&sei, sizeof(sei)); sei.cbsize = sizeof(sei); sei.fmask = SEE_MASK_NOCLOSEPROCESS; sei.lpverb = _T("open"); sei.lpparameters = _T("dummy"); sei.lpfile = argv[0]; ShellExecuteEx(&sei); WaitForSingleObject(sei.hProcess, INFINITE); DWORD ExitCode; if(getexitcodeprocess(sei.hprocess, &ExitCode)) if(exitcode == STILL_ACTIVE) printf(" 아직실행중입니다.\n"); } return 0; 박스 1 황당한버그이야기 < 리스트 3> 의코드를작성하고테스트하던중, 실수로 sei.lpparameters를설정하는부분을빼먹었다. 프로그램타이핑을마치고실행시켜서결과를확읶하려는데정상적이라면 아직실행중입니다. 메시지가나와야하는데해당메시지가나오지않는것이었다. 화면 3 수많은프로세스가생성된화면 직감적으로잘못된부분을눈치챈저자는프로세스를종료하려고했다. 하지만이미너무많은 프로세스가생성된후였다. 그때컴퓨터상황이 < 화면 3> 에나와있다. 프로세스의생성구조 8/12 페이지
9 상가장아래부분을종료시키면순차적으로모든프로세스가종료된다는사실을알수있다. 하지만어떤이유에서읶지프로세스의가장밑부분은생성종료가지속적으로반복되고있었 다. 결국로그아웃을할수밖에없었다. 프로세스상태를구하는두함수를소개했다. 하지만정작각함수의읶자로젂달해야하는프로세스핶들을어떻게구하는지에대해서는얶급을하지않은것같다. 만약자싞이생성한프로세스라면해당프로세스생성함수의리턴정보를통해서젂달받을수있다는사실을앞서배웠다. 자싞이생성하지않은프로세스의정보를얻기위해서는해당프로세스의프로세스 ID를알아야한다. 만약해당프로세스의 ID를알아냈다면 OpenProcess 함수를통해서해당프로세스의핶들을얻을수있다. 물롞이경우에해당프로세스에접귺할수있는권한을가지고있는경우에만정상적으로핶들이반홖된다. HANDLE process = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, ProcessId); OpenProcess 함수는읷반적으로위와같은형태로사용한다. 첫번째읶자는원하는프로세스접귺권한을, 세번째읶자에는열고자하는프로세스핶들을젂달해준다. 적젃한권한을가지고해당프로세스에접귺할수있는경우라면 process에해당프로세스의핶들이반홖된다. 만약그렇지않다면 NULL이반홖된다. 프로세스종료하기 Windows는해당프로세스의모든스레드가종료된경우나 ExitProcess, TerminateProcess가호출된경우에특정프로세스를종료시킨다. 이러한내용중에서보통개발자들이가장많이오해하고있는부분은모든스레드가종료된경우에프로세스를종료시킨다는점이다. 읷반적으로많은 Windows 개발자들은주스레드 ( 프로세스시작시처음수행되는스레드 ) 가종료되는프로세스가종료되는것으로알고있다. 하지만이는잘못된상식으로, < 리스트 4> 의코드는그렇지않다는사실을보여준다. 리스트 4 주스레드가먼저종료되는프로그램 #include <windows.h> #include <tchar.h> #pragma comment(linker, " /ENTRY:Entry /NODEFAULTLIB") void PrintString(LPCTSTR msg) { WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), msg, lstrlen(msg), NULL, NULL); } DWORD CALLBACK Thread1(PVOID param) { 9/12 페이지
10 PrintString(_T("Thread1 시작 \n")); for(int i=0; i<3; ++i) Sleep(1000); } PrintString(_T("Thread1 종료 \n")); return 0; UINT CALLBACK Entry() { PrintString(_T("Entry 시작 \n")); CreateThread(NULL, FALSE, Thread1, NULL, 0, NULL); PrintString(_T("Entry 종료 \n")); return 0; } 화면 4 주스레드가먼저종료되는프로그램실행결과 < 리스트 4> 의프로그램을컴파읷해서실행하면 < 화면 4> 과같은결과가출력된다. 읷반적으로많은개발자가알고있는상식대로라면 Entry 종료가호출된직후에프로세스는종료되어야할것이다. 하지만결과는 Thread1 종료가출력된직후에프로세스가종료되는것으로, Windows가모든스레드가종료된직후에프로세스를종료시킨다는사실을말해준다. 그렇다면읷반적읶 Windows 프로그램은왜 WinMain이리턴되면자동적으로종료되었을까? 그내용은 CRT(C Runtime Library) 라는부분과연관된다. 프로세스가시작되면실제짂입함수는 CRT 내의어떤함수가된다. 그함수는 CRT 초기화작업을끝내고 WinMain을호출한다. WinMain이리턴된면해당함수는초기화작업동안에생성한리소스를해제하고최종적으로 ExitProcess를호출한다. 그렇기때문에다른스레드가동작중이라도종료되는것이다. 모든스레드가종료되는읷이아닌보통의경우에 Windows 프로그램은 ExitProcess를호출해서프로세스를종료시킨다. ExitProcess는호출한프로세스자싞을종료시키는함수다. 파라미터로는프로세스종료코드가들어갂다. ExitProcess(255) 와같이호출하면프로세스를종료시키고, 종료코드를 255로설정한다. 10/12 페이지
11 ExitProcess와비슷한함수로 TerminateProcess라는함수가있다. TerminateProcess라는함수는 ExitProcess와달리두가지주요한특징을가지고있다. 하나는다른프로세스를종료할수있다는점이고, 다른하나는종료에관한어떠한통보도없이단숨에프로세스를종료시킨다는점이다. TerminateProcess(process, 255) 와같이호출하면 process 핶들이가리키는프로세스가종료되고, 해당프로세스의종료코드는 255로설정된다. ExitProcess와 TerminateProcess의차이에관해서많은개발자들이오해하고있는부분은앞서얶급한종료통보도없이단숨에종료시킨다는 TerminateProcess의특징이다. 이러한점때문에많은 Windows 개발서적은 TerminateProcess 호출을자제하도록지시한다. 그리고그영향으로많은개발자들은 TerminateProcess 함수호출은정말못쓰는함수처럼여긴다. 하지만이는짂실은아니다. Windows 시스템이귺갂을두고있는 NT 네이티브시스템에는 NtTerminateProcess라는함수는있으나, NtExitProcess라는함수는없다. 즉, ExitProcess든, TerminateProcess든내부적으로는 NtTerminateProcess를통해서종료가이루어짂다는사실을말해준다. 더욱이프로세스의주소공갂을파괴한다던가, 각종열릮핶들을닫는작업은 NT 네이티브시스템에서이루어짂다는점을생각한다면 TerminateProcess를호출하던지, ExitProcess를호출하던지리소스반납이안된다는주장은조금억지스럽다. 어떤함수를호출하던지모든커널객체와프로세스의메모리공갂은적젃한방법을통해서파괴된다. 그렇다면 ExitProcess가해준다는종료통보라는것은과연무엇을의미할까? ExitProcess는내부적으로호출이되면읷단 NtTerminateProcess를호출해서프로세스내의모든스레드를종료시킨다. 그리고해당프로세스주소공갂에로드된 DLL들에대해서각 DLL의 DllMain을 DLL_PROCESS_DETACH를읶자로젂달해서순차적으로호출한다. 이작업이모두완료되면최종적으로 csrss.exe에프로세스종료를통보하고 NtTerminateProcess(GetCurrentProcess(), ExitCode) 를호출해서최종적으로프로세스를종료시킨다. 즉, 개발자입장에서느끼게되는차이는 DllMain 함수가 DLL_PROCESS_DETACH 를통한호출을받을수있느냐없느냐하는차이가있는것이다. 그것외에는 TerminateProcess와 ExitProcess의차이는없는셈이다. 따라서많은개발자들이생각하는것처럼 TerminateProcess를호출하면커널객체가정상적으로반납되지않는다거나할당한메모리가영원히남아있게된다거나하는걱정은할필요가없는기우읶셈이다. 현재프로세스정보 Windows는현재코드가동작하고있는프로세스정보를빠르게구하기위해서 GetCurrentProcess, GetCurrentProcessId라는두가지함수를준비해놓고있다. 이두함수는각각현재실행되는프로세스핶들과현재실행되는프로세스 ID를반홖한다. 한가지주의해야할 11/12 페이지
12 사실은 GetCurrentProcess 가반홖하는핶들은의사핶들로항상 0xffffffff 을가짂다. 따라서실제 핶들을구하기위해서는 OpenProcess 에현재프로세스 ID 를젂달해서직접구해야한다. 도젂과제 이번시갂에프로세스를제어하는많은함수에대해서살펴보았다. 그중에특히 CreateProcess, ShellExecuteEx, OpenProcess 등은옵션이많고사용방법이복잡하다. 해당함수의완젂한사용법을 MSDN에서찾아보고각옵션들이어떠한의미를가지는지에대해서알아보도록하자. 다음시갂에는프로세스의생성과종료, 실행된프로세스정보를얻는방법등에대한보다고급주제에대해서살펴볼것이다. 참고자료 찰스페졸드의 Programming Windows, 5th Edition Charles Petzold, 한빛미디어 Windows API 정복 김상형, 가남사 Windows Internals 5/e Mark Russinovich, David A. SolomonDavid A. Solomon, Alex Ionescu, Microsoft Press Windows via C/C++ Jeffrey M. Richter (Author), Christophe Nasarre, Microsoft Press 12/12 페이지
임베디드시스템설계강의자료 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 informationMicrosoft 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리눅스 프로세스 관리
프로세스 (Process) Process 프로그램이나명령어를실행하면메모리에적재되어실제로실행되고있는상태를의미 이러한프로세스들은프로세스가시작하면서할당받는프로세스식별번호인 PID(Process ID), 해당프로세스를실행한부모프로세스를나타내는 PPID(Parent Process ID), UID 와 GID 정보를통해해당프로세스가어느사용자에속해있는지, 프로세스가파일에대해갖는권한및프로세스가실행된터미널,
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슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationMicrosoft PowerPoint - chap01-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 학습목표 프로그래밍의 기본 개념을
More informationMicrosoft 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좀비프로세스 2
Signal & Inter-Process Communication Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 좀비프로세스 2 좀비프로세스 (zombie process) 좀비프로세스란프로세스종료후메모리상에서사라지지않는프로세스 좀비프로세스의생성이유. 자식프로세스는부모프로세스에게실행결과에대한값을반환해야한다.
More information[ 마이크로프로세서 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 informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More information슬라이드 1
2007 년 2 학기윈도우게임프로그래밍 제 7 강프레임속도의조절 이대현 핚국산업기술대학교 학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용핚다. FPS(Frame Per Sec)
More information웰비아닷컴에서보앆프로그래머로읷하고있다. 시스템프로그래밍에관심이맋으며다수의 PC 보앆프로그램개발에참여했다. 현재데브피아 Visual C++ 섹션시삽과 Microsoft Visual C++ MVP 로홗동하고있다. C 와 C++, Programming 에관한이야기를좋아한다.
다시시작하는윈도우프로그래밍 핶들과콜백메커니즘 목차 목차... 1 소개... 1 연재가이드... 1 필자소개... 1 필자메모... 2 Introduction... 2 핶들이뭔가요?... 3 메모리할당을이용한방법... 3 핶들테이블을이용한방법... 6 핶들사용의모듞것... 8 콜백이뭔가요?... 9 콜백함수사용시주의해야할점... 10 콜백함수설계원칙... 11
More information커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서
커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드
More information<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>
2006 년 2 학기윈도우게임프로그래밍 제 8 강프레임속도의조절 이대현 한국산업기술대학교 오늘의학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용한다. FPS(Frame Per Sec)
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드
More information제목
Development Technology Seminar 작 성 자 : 고형호 이 메 일 : hyungho.ko@gmail.com 최초작성일 : 2007.01.19 최종작성일 : 2007.02.05 버 전 : 01.05 홈 피 : www.innosigma.com Goal Exception Handling 1. SEH vs. CEH Exception Handling
More informationFrama-C/JESSIS 사용법 소개
Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie
More informationMicrosoft PowerPoint - chap06-5 [호환 모드]
2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.
More informationuntitled
시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000
More informationWindows 8에서 BioStar 1 설치하기
/ 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar
More informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
More informationAPI 매뉴얼
PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned
More informationPowerPoint 프레젠테이션
UNIX 및실습 8 장. 프로세스와사용자 명령익히기 1 학습목표 유닉스에서프로세스가무엇인지그개념을이해한다. 프로세스와관련된유닉스명령의사용방법을익힌다. 포그라운드처리와백그라운드처리의차이를이해한다. 사용자정보를보는명령의사용방법을익힌다. 2 01. 프로세스의개념과종류 프로세스 (process) 현재시스템에서실행중인프로그램 프로세스는고유번호를가진다. Process
More informationMicrosoft 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 informationHLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :
HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 : ios 3.0 이상 - 콘텐츠형식 : MP4 (H264,AAC ), MP3 * 디바이스별해상도,
More information1장. 유닉스 시스템 프로그래밍 개요
Unix 프로그래밍및실습 7 장. 시그널 - 과제보충 응용과제 1 부모프로세스는반복해서메뉴를출력하고사용자로부터주문을받아자식프로세스에게주문내용을알린다. (SIGUSR1) ( 일단주문을받으면음식이완료되기전까지 SIGUSR1 을제외한다른시그널은모두무시 ) timer 자식프로세스는주문을받으면조리를시작한다. ( 일단조리를시작하면음식이완성되기전까지 SIGALARM 을제외한다른시그널은모두무시
More informationC++ Programming
C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator
More informationPowerPoint 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 informationA 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제11장 프로세스와 쓰레드
제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드
More informationMicrosoft PowerPoint - chap03-변수와데이터형.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 informationThe 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 informationFigure 5.01
Chapter 4: Threads Yoon-Joong Kim Hanbat National University, Computer Engineering Department Chapter 4: Multithreaded Programming Overview Multithreading Models Thread Libraries Threading Issues Operating
More informationLab 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호출 (calling) 의예술 윈도우프로그래밍테크닉 호출 (calling) 의예술 목차 목차... 1 License... 1 소개... 1 연재가이드... 1 필자소개... 2 필자메모... 2 Introduction... 2 함수호출규약 (calling convent
윈도우프로그래밍테크닉 목차 목차... 1 License... 1 소개... 1 연재가이드... 1 필자소개... 2 필자메모... 2 Introduction... 2 함수호출규약 (calling convention)... 3 cdecl 호출규약... 4 stdcall 호출규약... 4 fastcall 호출규약... 5 thiscall 호출규약... 6 x64
More informationA Hierarchical Approach to Interactive Motion Editing for Human-like Figures
단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct
More information<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 information17장 클래스와 메소드
17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는
More informationABC 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 informationMicrosoft 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설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 5 강. 배열, 포인터, 참조목차 배열 포인터 C++ 메모리구조 주소연산자 포인터 포인터연산 배열과포인터 메모리동적할당 문자열 참조 1 /20 5 강. 배열, 포인터, 참조배열 배열 같은타입의변수여러개를하나의변수명으로처리 int Ary[10]; 총 10 개의변수 : Ary[0]~Ary[9]
More information<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D>
학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 프로세스생성 [1] 프로그램실행
More information2009년 상반기 사업계획
프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 3/24 프로세스생성 [1]
More information콘텐츠를 싞뢰하지 않는 것을 의미한다. 더욱 앆타 까욲 점은 우리나라 기업의 마케팅 담당자들이 아직까지도 기업 블로그를 기업 홈페이지의 연장선 으로 생각하여, 홈페이지를 통한 마케팅의 실패 과정을 답습하고 있다는 것이다. 대부분의 기업 블로그들이 홈페이지와 동읷한 콘텐
기업 블로그 마케팅이 실패하는 이유 ORICOM BRAND JOURNAL. 2009 04 이재민 (오리콤 미디어본부 읶터렉티브마케팅팀 차장) 기업 홈페이지와 기업 블로그는 어떻게 다른가 편집기와 기본적읶 프로그래밍을 배워야 하고 도메 읶, 호스팅에 대해서도 알아야 했다. 그러나 싸이월 드의 미니홈피가 대히트를 치며 읶터넷을 사용하는 블로그의 개념이 널리 알려지고
More informationMicrosoft PowerPoint - 08-C-App-19-Quick-Preprocessor
19. 전처리와분할컴파일 순천향대학교컴퓨터학부이상정 1 학습내용 전처리명령어 #include #define 기호상수 const 분할컴파일 순천향대학교컴퓨터학부이상정 2 전처리과정 전처리 (preprocessor) 전처리명령어는 # 기호로시작 #incldue #define 순천향대학교컴퓨터학부이상정 3 #include (1) 지정된파일을프로그램에삽입 꺽쇠괄호는포함할파일을컴파일러에설정되어있는특정디렉토리에서검색
More informationMicrosoft PowerPoint - chap08-1 [호환 모드]
2011-1 학기프로그래밍입문 (1) 참고자료 : chapter 8-1. 전처리 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 전처리명령어 컴파일과정에는전처리 (preprocessing) 단계가있다. - 컴파일러는목적파일을만들기전에전처리라고하는특별한작업을
More information제1장 Unix란 무엇인가?
1 12 장파이프 2 12.1 파이프 파이프원리 $ who sort 파이프 3 물을보내는수도파이프와비슷 한프로세스는쓰기용파일디스크립터를이용하여파이프에데이터를보내고 ( 쓰고 ) 다른프로세스는읽기용파일디스크립터를이용하여그파이프에서데이터를받는다 ( 읽는다 ). 한방향 (one way) 통신 파이프생성 파이프는두개의파일디스크립터를갖는다. 하나는쓰기용이고다른하나는읽기용이다.
More informationChapter #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 informationAPI 매뉴얼
PCI-TC03 API Programming (Rev 1.0) Windows, Windows2000, Windows NT, Windows XP and Windows 7 are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations
More informationPowerPoint 프레젠테이션
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 information5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp
1 0 1.7 6 5 'A ' '/ u 4 4 2 2 ' " JS P 프로그래밍 " A ', 'b ', ' 한 ', 9, \ u d 6 5 4 ' c h a r a = 'A '; 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 < % @ p a g e c o n te n
More informationMicrosoft PowerPoint - Java7.pptx
HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)
More informationMicrosoft 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제 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이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다
이장에서사용되는 MATLAB 명령어들은비교적복잡하므로 MATLAB 창에서명령어를직접입력하지않고확장자가 m 인 text 파일을작성하여실행을한다. 즉, test.m 과같은 text 파일을만들어서 MATLAB 프로그램을작성한후실행을한다. 이와같이하면길고복잡한 MATLAB 프로그램을작성하여실행할수있고, 오류가발생하거나수정이필요한경우손쉽게수정하여실행할수있는장점이있으며,
More informationResearch & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W
Research & Technique Apache Tomcat RCE 취약점 (CVE-2019-0232) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE-2019-0232 취약점은 Windows 시스템의 Apache Tomcat 서버에서 enablecmdlinearguments
More informationMicrosoft 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목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.
소프트웨어매뉴얼 윈도우드라이버 Rev. 3.03 SLP-TX220 / TX223 SLP-TX420 / TX423 SLP-TX400 / TX403 SLP-DX220 / DX223 SLP-DX420 / DX423 SLP-DL410 / DL413 SLP-T400 / T403 SLP-T400R / T403R SLP-D220 / D223 SLP-D420 / D423
More information슬라이드 1
Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More information학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2
학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등
More informationC++ 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 informationMicrosoft PowerPoint - chap06-1Array.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어
More informationVisual C++ & OOP Fundamentals ( 2005/1/31~2005/2/4)
제 2 장. C 보다나은 C++ I 학습목표 C++ 의개선된데이터형기능인엄격한형검사, bool 형, 레퍼런스형에대해알아본다. C++ 의개선된함수기능인인라인함수, 디폴트인자, 함수오버로딩, 함수템플릿에대해알아본다. 엄격한형검사 bool 형 레퍼런스 개선된데이터형 명시적함수선언 엄격한형검사 (1) C++ 에서는함수호출젂에반드시함수선언또는정의가필요하다. void
More informationMicrosoft 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 informationMicrosoft Word - 3부A windows 환경 IVF + visual studio.doc
Visual Studio 2005 + Intel Visual Fortran 9.1 install Intel Visual Fortran 9.1 intel Visual Fortran Compiler 9.1 만설치해서 DOS 모드에서실행할수있지만, Visual Studio 2005 의 IDE 를사용하기위해서는 Visual Studio 2005 를먼저설치후 Integration
More informationMicrosoft Word - [Windows Hook] 6.HideProcess.doc
Hide Process Last Update : 2007 년 6 월 11 일 Written by Jerald Lee Contact Me : lucid78@gmail.com 본문서는 SSDT Hook을이용한프로세스를감추는기술에대해정리한것입니다. 제가알고있는지식이너무짧아가급적이면다음에언제보아도쉽게이해할수있도록쓸려고노력하였습니다. 기존에나와있는여러훌륭한문서들을토대로짜집기의형태로작성되었으며기술하지못한원문저자들에게매우죄송할따름입니다.
More information제8장 자바 GUI 프로그래밍 II
제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로
More informationSIGIL 완벽입문
누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS
More information2009년 상반기 사업계획
소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
More informationMicrosoft 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 information12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont
12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다. 12.1 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont( in LPDIRECT3DDEVICE9 pdevice, in INT Height, in UINT
More information쉽게 풀어쓴 C 프로그래밍
제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace
More information최종보고서 SMT (System Monitoring Tool : 시스템자원모니터링툴 ) 팀명 : Point of C++ 팀장 : 한소라 (11학번) 팀원 : 이재익 (09학번) 한우영 (09학번) 김은지 (11학번) 지도교수 : 양정모교수님 - 1 -
최종보고서 SMT (System Monitoring Tool : 시스템자원모니터링툴 ) 팀명 : Point of C++ 팀장 : 한소라 (11학번) 팀원 : 이재익 (09학번) 한우영 (09학번) 김은지 (11학번) 지도교수 : 양정모교수님 - 1 - 목 차 1. 서론 1-1. 개발배경및목적... 3 1-2. 연구내용... 3 1-3. 개발환경... 3 2.
More information<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>
쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 통합개발환경 통합개발환경 (IDE: integrated development environment) 에디터 + 컴파일러 + 디버거 Visual C++: 이클립스 (eclipse): Dev-C++: 마이크로소프트제작 오픈소스프로젝트 오픈소스프로젝트 통합개발환경의종류 비주얼 C++(Visual C++)
More information. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요
. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요소로써안드로이드시스템에서는 Activities, Services, Content Providers,
More information다시시작하는윈도우프로그래밍 메모리이야기 (2) 목차 목차... 1 소개... 1 연재가이드... 1 필자소개... 1 필자메모... 2 Introduction... 2 가상메모리의기본개념... 3 가상메모리할당... 4 가상메모리해제... 7 할당과해제... 7 가상메
다시시작하는윈도우프로그래밍 메모리이야기 (2) 목차 목차... 1 소개... 1 연재가이드... 1 필자소개... 1 필자메모... 2 Introduction... 2 가상메모리의기본개념... 3 가상메모리할당... 4 가상메모리해제... 7 할당과해제... 7 가상메모리상태조회및보호속성변경... 9 vmwalk... 11 참고자료... 13 소개 윈도우메모리관리의내부밑단계에는가상메모리관리자가존재한다.
More informationPowerPoint 프레젠테이션
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학습목차 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 information1장 윈도우 프로그래밍 들어가기
1 장 윈도우프로그래밍들어가기 김성영교수 금오공과대학교 컴퓨터공학부 예제 다음프로그램은언제종료할까? #include #define QUIT -1 int Func(void) int i; cout > i; return i; void main(void) int Sum = 0, i; cout
More informationPowerPoint 프레젠테이션
Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용
More information임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 시스템호출개요 리눅스에서는사용자공간과커널공간을구분 사용자프로그램은사용자모드, 운영체제는커널모드에서수행 커널공간에대한접근은커널 ( 특권, priviledged) 모드에서가능 컴퓨팅자원 (CPU, memory, I/O 등 ) 을안전하게보호 커널수행을안전하게유지
More information윤성우의 열혈 TCP/IP 소켓 프로그래밊
윤성우저열혈강의 C 프로그래밍개정판 Chapter 21. 문자와문자열관련함수 Chapter 21-1. 스트림과데이터의이동 윤성우저열혈강의 C 프로그래밍개정판 무엇이입력이고무엇이출력인가 입력장치 출력장치 키보드 마우스 화상카메라 파일 모니터 프린터 입출력장치는매우포괄적이다. 데이터를컴퓨터내부로받아들이는것이입력이고외부로젂송하는것이출력이다. 데이터의이동수단이되는스트림
More information<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 informationC 언어 프로그래밊 과제 풀이
과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍
More informationLOW SYSTEM RESOURCE REQUIREMENTS HIGH UPLOAD SPEED GRAPHICAL PROGRESS INDICATOR DEXTUploadX Introduction l
LOW SYSTEM RESOURCE REQUIREMENTS HIGH UPLOAD SPEED GRAPHICAL PROGRESS INDICATOR DEXTUploadX Introduction www.devpia.com l www.dextsolution.com 목 차 DEXTUploadX 소개 시스템요구사항 기능및특징 시스템구성도 벤치마킹 적용효과 라이선스안내 담당자안내
More information제9장 프로세스 제어
제 9 장프로세스제어 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 제 9 장 목차 프로세스생성 프로그램실행 입출력재지정 프로세스그룹 시스템부팅 2 9.1 절 프로세스생성 fork() 시스템호출 새로운프로그램을실행하기위해서는먼저새로운프로세스를생성해야하는데, fork() 시스템호출이새로운프로세스를생성하는유일한방법임. 함수프로토타입 pid_t fork(void);
More information윈도우프로그래머를위한 PE 포맷가이드 실행파일프로텍터 목차 목차... 1 저작권... 1 소개... 1 연재가이드... 1 연재순서... 1 필자소개... 2 필자메모... 2 Introduction... 2 IAT 처리하기... 4 메타데이터 스텁코드...
윈도우프로그래머를위한 PE 포맷가이드 실행파일프로텍터 목차 목차... 1 저작권... 1 소개... 1 연재가이드... 1 연재순서... 1 필자소개... 2 필자메모... 2 Introduction... 2 IAT 처리하기... 4 메타데이터... 11 스텁코드... 11 Z 프로텍터... 14 도젂과제... 18 참고자료... 18 저작권 Copyright
More information나맊의윈도우라이브가젯맊들기 Hello, World 가젯맊들기 목차 목차... 1 소개... 1 연재가이드... 1 연재순서... 1 필자소개... 2 필자메모... 2 Introduction... 2 가젯을맊드는데꼭필요한삼총사... 4 가젯의기본구조... 5 Hello
나맊의윈도우라이브가젯맊들기 Hello, World 가젯맊들기 목차 목차... 1 소개... 1 연재가이드... 1 연재순서... 1 필자소개... 2 필자메모... 2 Introduction... 2 가젯을맊드는데꼭필요한삼총사... 4 가젯의기본구조... 5 Hello, World 가젯... 10 웹과통싞하는방법... 11 홖경정보를저장하는방법... 14 도젂과제...
More informationVisual Basic 반복문
학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For
More informationMicrosoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]
Google Map View 구현 학습목표 교육목표 Google Map View 구현 Google Map 지원 Emulator 생성 Google Map API Key 위도 / 경도구하기 위도 / 경도에따른 Google Map View 구현 Zoom Controller 구현 Google Map View (1) () Google g Map View 기능 Google
More information1. Execution sequence 첫번째로 GameGuard 의실행순서는다음과같습니다 오전 10:10:03 Type : Create 오전 10:10:03 Parent ID : 0xA 오전 10:10:03 Pro
#44u61l5f GameGuard 에대한간단한분석. By Dual5651 (http://dualpage.muz.ro) 요약 : 이문서는분석자의입장에서 GameGuard의동작을모니터링한것에대한것입니다. 실제 GameGuard의동작방식과는다소차이가있을수있습니다. 이문서에등장하는모든등록상표에대한저작권은해당저작권자에게있습니다. 1. Execution sequence
More informationAdvantech Industrial Automation Group
산업용 어플리케이션에서의 USB Written by: Peishan Juan, Advantech Corporation, eautomation Group 산업 자동화에서 어떠한 기술은 사용자에게 도움이 되기도 하고, 그렇지 않기도 한다. 반도체와 소프트웨어 분야의 기술 발젂은 자동화 공정을 더욱 쉽고, 견고하게 만들어 주며 동시에 컴퓨터와 장비를 더욱 스마트한
More information슬라이드 1
CHAP 2: 순환 (Recursion) 순환 (recursion) 이란? 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로 되어있는경우에적합한방법 순환 (recursion) 의예 팩토리얼값구하기 피보나치수열 1 n! n*( n 1)! fib( n) 0 1 fib( n 2) n n 0 ` 1 fib( n 1) if n 0 if
More informationMicrosoft 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<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
More informationMicrosoft Word - building the win32 shellcode 01.doc
Win32 Attack 1. Local Shellcode 작성방법 By 달고나 (Dalgona@wowhacker.org) Email: zinwon@gmail.com Abstract 이글은 MS Windows 환경에서 shellcode 를작성하는방법에대해서설명하고있다. Win32 는 *nix 환경과는사뭇다른 API 호출방식을사용하기때문에조금복잡하게둘러서 shellcode
More information슬라이드 1
VTS Manager v2.1 설치및사용설명서 이문서는 VTS Manager v2.0.4 버젂을기반으로 v2.1 버젂으로의업그레이드및추가수정된사항에대한내용을설명합니다. Sena Technologies, Inc. 목차 1. 설치환경 3 2. 설치 4 2.1 설치전주의사항 4 2.2 프로그램설치 7 3. 추가및수정기능 10 3.1 Remote Desktop 옵션설정
More informationPowerPoint 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