실행중인 프로세스가 자신에 대해 delete 명령을 했을 때 어떻게 되나요?

익명 사용자의 이미지

ShellExecute(NULL,"open","delete.bat",NULL,NULL,SW_SHOW);
라고 코드를 작성하였습니다.( 이 코드를 test.exe로 컴파일하였습니다.)

delete.bat의 내용은 del test.exe입니다.

제 질문은 test.exe가 실행이 끝난후 delete.bat에 의해 자신이 삭제되는데요
생각해보면 실행중인 프로세스를 지우려니깐 실행이 완료된 후 delete.bat에 의해 자신(test.exe)이 삭제될텐데요
이러한 처리는 os 에서 해주는건가요?

조사해보니깐 ShellExecute() API 함수에 의해 하드 디스크에서 test.exe 파일은 삭제하고
메모리 상에는 test.exe가 맵핑됐기 때문에 그대로 남아있어서 계속 자신(test.exe)을 실행시킬 수 있대요.
제가 조사한 내용이 올바른건가요?

익명 사용자의 이미지

윈도우에서는 모르겠고

리눅스에서는

조사한대로

file 은 삭제되도 이미 메모리에 로드된 상태여서 프로세스는 죽지않고..

할일 다하고..종료됩니다.

익명 사용자의 이미지

"실행중인 프로세스를 지우려니깐"

del test.ext 는 실행중인 프로세스는 지우는게 아니고
파일을 지울뿐이에요..

익명 사용자의 이미지

그러면 실행중인 프로세스를 지울려고 했을 때, 파일만 지우고 메모리에 맵핑된 내용은 지우지 않는건 OS단에서 해주는건가요?
그점과 관련된 자료가 있다면 소개해주세요! 읽어보게요.

manics99의 이미지

실행 파일이 '실행'되고 있다는것은 Memory에 Load되어 CPU에 Fetch될 수 있는 상태가 되어 있다는 것입니다...
이렇게 로드되어진 후에는 더이상 스토리지의 원본과는 상관이 없습니다...

익명 사용자의 이미지

윈도우에서는 메모리에 로드된 바이너리 (exe, dll)는 삭제되지 않습니다.

익명 사용자의 이미지

"그러면 실행중인 프로세스를 지울려고 했을 때, 파일만 지우고"

프로세스와 실행파일을 혼동하는듯 합니다.

프로세스는 실행파일이 메모리에 로드되어서 OS 의 스케쥴링을 받는 상태이고
실행파일은 스토리지에 저장되어 있는 상태입니다.

프로세스를 지운다면( == 죽인다면.. ) 하던일 멈추고 바로 종료될거에요.

프로세스와 실해파일의 차이는 아마도 공룡책(OS책) 에 나와 있지 않을까 싶어요..

익명 사용자의 이미지

공룡책 읽어볼께요!

nthroot의 이미지

파일시스템도 보셔야 할 것 같은..파일시스템 차이에 기반한...

------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.