IE8의 경우 기본적으로 탭 당 프로세스가 1개씩 띄도록 되어있는 구조라 ActiveX 등을 IE로 디버그하기 위해 이용할 수가 없습니다. 즉, ActiveX가 로드된  IE 프로세스가 Visual Studio와 연결된 IE 프로세스와 다르기 때문입니다.

디버그하기 위한 방법이 있는데, IE 프로세스를 1개만 띄도록 하는 것입니다.
아래와 같이 레지스트리에 IE관련 항목을 추가하면 됩니다.

1. 레지스트리 에디터를 연다.
2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main 키를 연다.
3. TabProcGrowth 라는 DWORD 값을 추가한다.
4. TabProcGrowth의 값을 0으로 설정한다.

위와 같이 설정하면, 이후부터는 IE 프로세스가 1개만 실행됩니다. Visual Studio에서 디버그도 가능하고요.
점심 먹구 웹서핑을 하던 중 MS Windows 호환 공개 OS가 있는 걸 알게 되었습니다.
이름은 ReactOS. 오픈 소스 형태로 개발되고 있으며 공식 사이트는 아래와 같습니다.

아래는 공식 홈페이지에 있는 ReactOS 소개글입니다. 아직은 알파 버전 단계정도이라고 하니, 발전해 가는 모습을 지켜보는 것도 재미있을 듯 합니다.
ReactOS® 는 Microsoft Windows® XP와 호환성이 있는 자유 공개 소스 운영체제입니다. ReactOS는 Windows NT, XP 운영체제와의 완벽한 어플리케이션, 장치 드라이버 호환성을 제공하는 것을 목표로 하고 있습니다. 이것은 Windows와 비슷한 아키텍쳐를 사용하고, 완전하며 동등한 외부 인터페이스를 제공함으로써 이루어집니다.

ReactOS는 현존하는 Windows형 운영체제 중 가장 완전한 구동 모델입니다. 따라서, 프로그래머들은 ReactOS 소스 코드를 공부하거나 심지어 ReactOS 개발에 참여할 수도 있으며, 이를 통해 많은 것을 배울 수 있습니다.

ReactOS는 계속해서 새로운 버전의 기능들을 추가하고 있으며, 때로는 정상급의 운영체제 기술을 새로 쓰기도 합니다.

즉, ReactOS는 여러분의 어플리케이션을 실행하고 하드웨어를 사용하는 것을 목표로 하는, 여러분을 위한 무료 운영체제입니다!

ReactOS 0.3.9 은 아직 alpha 단계에 있다는 것을 기억해 주세요. 아직 기능이 완전하지 않고, 일상적으로 사용하기에는 알맞지 않습니다.

일단 구경부터 하면, 아래는 설치화면과 초기화면, 오픈 오피스 실행화면 캡쳐화면입니다.
대략적인 화면은 MS Windows 2000 UI와 비슷합니다.


여러 이유로 실행파일이 동시에 여러 개 실행되지 않도록 하는 방법은 윈도우즈에서는 MUTEX 등을 이용해서 간단히 구현해서 사용하고 있었습니다.

이번 프로젝트에서 리눅스 플랫폼도 지원해야 해서, 리눅스 쪽에서 방법을 찾고 있었는데, 네임드 세마포어로 해결했습니다.

sem_open을 이용해서 네임드 세마포어를 만들고 이걸 검사해서 이미 존재하면 종료하도록 구현했습니다.

BOOL IsRunning()
{
    BOOL ret = FALSE;

    gRunning = sem_open(MY_SEMAPHORE, O_CREAT | O_EXCL, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH, 1);

    if(gRunning == SEM_FAILED)
    {
        if(errno == EEXIST)
        {
            ret = TRUE;
        }
    }

    return ret;
}

생성된 네임드 세마포어는 프로그램 종료시 삭제하면 됩니다.
if (gRunning != NULL)
{
    sem_close(gRunning);
    sem_unlink(MY_SEMAPHORE);
}


+ Recent posts