簡體   English   中英

無法在linux中創建僵屍進程

[英]can't create zombie process in linux

好吧,我有一個奇怪的問題。 我無法在我的項目中創建僵屍進程,但我可以在其他文件中執行此操作。 有簡單的說明:

int main()
{
    if(fork()==0)
        printf("Some instructions\n");
    else
    {
        sleep(10);
        wait(0);
    }
    return 0;
}

這個簡單的代碼創建了一個10秒的僵屍進程。 我正在檢查,它確實存在。

但是,如果我將此代碼復制到我的程序(我自己的shell)中,那么在BUT僵屍進程之前執行的所有操作都根本不存在。 我不知道有什么區別。 這是相同的代碼。

有更多的信息我應該知道嗎? 有沒有其他方法以簡單的方式創建僵屍?

試試這個python腳本:

#!/usr/bin/python
# -*- coding: utf8 -*-

import subprocess
import time
import threading

# Create 100 subprocesses 

proc = {}
for i in xrange(0,1000):
        proc[i] = subprocess.Popen(['ls','-l'])

# create zombies from this processes, observe one minute zombies
time.sleep(60)

# Zombies dead
proc.communicate()

time.sleep(5)

此后檢查僵屍:

# ps -A | grep defunc
14711 pts/49   00:00:00 ls <defunct>
14713 pts/49   00:00:00 ls <defunct>
14716 pts/49   00:00:00 ls <defunct>
.... 
14740 pts/49   00:00:00 ls <defunct>
14741 pts/49   00:00:00 ls <defunct>
14742 pts/49   00:00:00 ls <defunct>
14743 pts/49   00:00:00 ls <defunct>
14746 pts/49   00:00:00 ls <defunct>
14749 pts/49   00:00:00 ls <defunct>
....
14805 pts/49   00:00:00 ls <defunct>
14806 pts/49   00:00:00 ls <defunct>

或者C:

#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main ()
{ 
  pid_t child_pid;

  child_pid = fork ();
  if (child_pid > 0) {
    sleep (60);
  }
  else {
    exit (0);
  }
  return 0;
}

應該像魅力一樣工作,就像水晶般清澈純凈的海天Vodou

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM