Remote Method Invocation

RMI, Remote Method Invocation Client에서 Server의 함수를 호출하는 기법. Server의 함수에 parameter를 넘겨주고 return 값을 받음. RMI 통신 방법으로 객체 직렬화 (Serialization) 이용함. // 주소공간에서 다른 주소공간으로 객체의 전달을 투명하게...

Shared library symbol visibility

Symbol table 함수나 변수를 참조, 호출할 때 함수명, 변수명(식별자, identifier)을 사용하고, 실제 함수, 변수는 메모리(함수: .text region, 변수: .data .stack)에 저장되어 있다. 이 때 함수명, 변수명을 Symbol이라 하며 컴파일러(or 인터프리터)는...

C++ Multithreading Programming

Thread Disk에 저장되어 실행가능한 파일로 되어 있는 것을 프로그램이라 하며, 해당 프로그램이 운영체제로부터 자원(CPU, Virtual memory…)을 할당 받아 실행 중인 동적인 객체를 프로세스라 한다. 프로세스가 수행되려면 자원(Resource)와 수행 흐름(Flow of...

C++ Custom exception handling

Custom exception handling 1. Make custom exception class According to std exception custom exception class inherit from std::exception like below. // exception.hxx class Exception : public std::exception { public: Exception(int...

Implement 'ls', 'cat' using c++ on linux

#include <cstdio> #include <sched.h> #include <iostream> #include <string> #include <memory> std::string ls(const char *path) { using FilePtr = std::unique_ptr<FILE, decltype(&::pclose)>; std::string cmd("/bin/ls "); cmd.append(path); FilePtr ls(::popen(cmd.c_str(), "r"), ::pclose); if (ls...