внештатная ситуация =)

Тема в разделе "WASM.WIN32", создана пользователем zonder, 10 дек 2004.

  1. zonder

    zonder New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2004
    Сообщения:
    9
    У меня есть процесс... Как в случае его незапланированной смерти (допустим переполнение) восстановить его?.. Нужно создавать процесс который следил бы за этим или есть другой способ?..
     
  2. vinnie_pooh

    vinnie_pooh New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2004
    Сообщения:
    98
    в смысле запустить снова? Если да, то так:
    Код (Text):
    1.     .586
    2.     .model  flat
    3.     .data
    4. exe_name        db  "Shell.exe",0
    5. si  STARTUPINFO <>
    6. pi  PROCESS_INFORMATION <>
    7. hExeProcess     dd  ?
    8.     .code
    9. _start:
    10.     xor ebx,ebx
    11. again:
    12.     mov si.cb,size STARTUPINFO
    13.     mov si.dwFlags,STARTF_USESHOWWINDOW
    14.     mov si.wShowWindow,SW_SHOWNORMAL
    15.  
    16.     push    offset pi
    17.     push    offset si
    18.     push    ebx
    19.     push    ebx
    20.     push    ebx
    21.     push    ebx
    22.     push    ebx
    23.     push    ebx
    24.     push    offset exe_name
    25.     push    ebx
    26.     call    CreateProcess
    27.     test    eax,eax
    28.     je  exit
    29.    
    30.     mov eax,pi.hProcess
    31.     mov hExeProcess,eax
    32.    
    33.     push    -1
    34.     push    eax
    35.     call    WaitForSingleObject
    36.    
    37.     push    hExeProcess
    38.     call    CloseHandle
    39.     jmp again
    40.  
    41. exit:
    42.     push    ebx
    43.     call    ExitProcess
    44.     end _start
     
  3. ProgramMan

    ProgramMan New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2004
    Сообщения:
    263
    "Нужно создавать процесс который следил бы за этим" да если он действительно закилен.

    Запусти его в режиме отладки, где твоя прога -отладчик.

    "Как в случае его незапланированной смерти (допустим переполнение) восстановить его?" перепольнение это ещё не смерть :) писпользуй SEH.