이 글은 파이프 통신을 공부하며 진행하게된 코드를 기재한다. 블로그 운영도 처음이고 첫글이니 만큼 어수룩한면이 많아 이해해주길 바랍니다.^^
앞으로 나아지겠죠? ㅎㅎ
최근 개인적으로 진행하고 있는 프로젝트를 진행하기 위해 파이프를 공부하며 작성하게된 코드를 소개하겠습니다. 잡담은 여기까지~~
코드를 소개하면 작성된 프로그램은 Child프로세스로 cmd.exe를 실행 이후 부모프로세스(작성된 프로그램)와 child process사이에 파이프통신을 연결한다.
이 파이프를 통하여 부모프로세스는 child process인 cmd.exe에 cmd명령어(ipconfig,ping등)를 내릴수 있게 된다.
아래의 코드중 색으로 하이라이팅된 코드들은 진행하며 알게 되거나 삽질하게된 부분이다.
코드 |
#include<stdio.h>
|
※빨간색 하이라이팅
- SECURITY_ATTRIBUTES.bInheritHandle(TRUE)
: TRUE로 설정이후 CreatePipe를 할 경우 이후 설정된 값(TRUE)을 통해 생성된 파이프는 핸들테이블에서 상속가능한 핸들로 설정된다.
-CreateProcess 5 Parameter(TRUE)
: TRUE로 설정될 경우 핸들테이블의 상속가능한 핸들들을 하위 프로세스에게 상속한다.
(즉 위 SECURITY_ATTRIBUTES.bInheritHandle가 TRUE로 생성된 리소스(파이프등)의 핸들이 상속된다.)
※연두색 하이라이팅
-표준 입출력관련 핸들로써 이를 파이프로 연결하여 마우스,모니터를 통해 명령어를 주고 결과값을 읽어올 수 있게 된다.
※파란색 하이라이팅
-"\r\n"를 통하여 명령어의 끝을 알수있다. 즉 "\r\n"은 키보드 Enter로 인식하여 넘겨야 된다.
(이것때문에 명령어가 넘어가도 Enter를 치지 않기때문에 ReadFile을 통하여 명령어가 실행되지 않았다. ㅠㅠ 삽질업청했네요...)
위 코드를 통하여 프로세스간통신(IPC)를 연결해보았고 공부하며 더불어 커널오브젝트 핸들상속에 대해 공부하게되었습니다. 이 게시판은 코드게시판으
로 파이프에 대해 알게 된 사실들(커널오프젝트 핸들상속)은 Windows게시판에 게시합니다.
이상으로 부족한 첫 게시글을 봐주셔서 감사합니다~^^ 열공합시닷!!!
'Programming > System Programming' 카테고리의 다른 글
[WIN32 / C]모든 프로세스 모듈 스캔 코드 (0) | 2017.05.04 |
---|---|
[WIN32 / C] 권한상승 코드 (0) | 2017.05.03 |
[WIN32 / C]프로세스 하위 Thread Entry Point (EP) 코드 출력 (0) | 2017.05.02 |
[WIN32 / C] CreateEvent를 이용한 투표 프로그래밍!!(Thread순서동기화) (0) | 2017.04.01 |
[WIN32/C] Driver Loader (0) | 2017.03.27 |
댓글