본문 바로가기

Programming

C++에서 문자열 EOF까지 입력받고 출력하기 123456789101112#include #include #include int main(void){ std::istreambuf_iterator begin(std::cin), end; std::string s(begin, end); std::cout 더보기
c++ 템플릿 공부 두 값을 더하는 add연산을 하는 함수를 만들어야 한다는 상황을 가정해보자1234567891011121314151617181920212223242526272829303132333435363738394041#include /*int add(int a, int b) { return a + b;}double add(double a, double b) { return a + b;}std::string add(std::string a, std::string b) { return a + b;}*/ template T add(T a, T b) { return a + b;} // 특수화 (Specialization)template int add(int* a, int* b) { return *a + *b;} int ma.. 더보기
Lvalue와 Rvalue 오늘 한거1. Reference 2. C언어에서의 Lvalue와 Rvalue 3. C++에서의 Lvalue와 Rvalue 4. Rvalue Reference 5. 클래스를 생성할 때 기본으로 생성되는 것들 (6가지)1. Reference123456789101112131415161718192021222324#include using namespace std; void swap(int&a, int&b) { int tmp = a; a = b; b = tmp;} int main(void) { int a = 10, b = 20; int& rA = a; cout 더보기
Hello, World! 2 module_init(), module_exit() 매크로 사용make 갑자기 커널 모듈로 리버싱 문제를 만들면 꽤 재밌을 것 같다는 생각을 하였다.. 모듈을 직접 분석하여 특정 주소에 키 값을 올리면 모듈이 체크하여 correct, wrong 구분하도록.. 더보기
Hello, World! Hello, World!를 로그에 기록하는 모듈을 만들어 보았다. make 더보기
프로세스 끼리의 통신 - pipe() 파이프는 프로세스끼리의 통신(IPC)를 할 때 사용되는 방법 중 하나입니다. pipe()로 생성하는 파이프는 프로세스 내에 생성되는 것이 아닌 커널에 생성되며 파이프를 사용할 수 있는 파일 디스크립터만 프로세스에게 주어지게 됩니다. 그러므로 하나의 프로세스가 파이프를 생성하고, 그 파이프의 파일 디스크립터를 사용하여 프로세스간 통신을 할 수 있게 됩니다. 여기서 생성된 파이프에서 신경써야 할 것은 바로 파이프의 입출력 방향이 이미 결정되어 있다는 것입니다. 따라서 파이프를 생성하면 이를 이용할 수 있는 2개의 파일 디스크립터가 만들어지게 됩니다. pipe함수의 원형은 int pipe(int fd[2]) 입니다. 인자로 들어오는 두 개의 파일 디스크립터 중 fd[0]은 파이프의 읽기 전용 파일 디스크립터이.. 더보기
자식프로세스 생성 - fork() ※제가 공부한 내용을 정리한 내용이라 설명이 부실하고 혹은 올바르지 않은 부분도 있을 수 있습니다. 리눅스에서 fork함수를 사용하면 현재 프로세스의 자식 프로세스를 만들 수 있습니다. fork함수는 unistd.h라는 헤더에 선언되어 있습니다. 부모프로세스에서 fork함수를 호출하여 자식 프로세스를 만들면 자식 프로세스는 부모프로세스와 완벽히 똑같은 프로세스가 생성됩니다. 다만 하나, fork리턴 값이 0으로 설정된다는 차이점이 있습니다. 이 리턴값으로 부모인지 자식인지를 구분할 수 있습니다. 부모에서 fork를 호출하면 리턴값으로 자식의 pid가 리턴됩니다. 즉, 0이 리턴이 됐다면 자식 프로세스인 것이고 그 외의 값이 리턴됐다면 부모 프로세스 인 것입니다. 다만 -1이 리턴된다면 이는 자식 프로세스.. 더보기
Windows Data Types 시스템 프로그래밍을 공부하는데 모르는 자료형이 너무 많았다. 그래서 MSDN에서 찾아 보았다. 우선 링크는 https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx 여기이다. 진짜 처음 보는 자료형이 엄청 많이 있었다. 모르는게 생길 때마다 여기서 보면 될 것 같다. 몇 개만 정리해 놓아야 겠다. BOOL - 불런 타입의 변수로써 참과 거짓 두 값만 저장하는 자료형이다. WinDef.h에 선언되어 있다. (typedef int BOOL)BYTE - 1바이트 짜리 자료형이다. WinNT.h에 선언되어 있다. (typedef unsigned char BYTE)CALLBACK - 콜백 함수를 위한 콜링 컨벤션(함수 호출 규약.. 더보기
atoi 구현 AT&T문법 어셈블리 코딩 연습 - atoi 더보기
isnumber 구현 AT&T문법 어셈블리 코딩 연습 - isnumber 더보기