用C/C++来在Linux/Unix下面制造僵尸进程

来源:互联网 发布:奥尼尔职业生涯数据 编辑:程序博客网 时间:2024/05/02 01:30

转自:http://hi.baidu.com/sohu2000000/blog/item/e17454ed48afa0f7b3fb95d2.html

 

经过不懈的努力,我终于做出了我的“捣蛋”代码,“僵尸制作者”,代码如下,输出结果在代码最后的注释里面)

/*
* makeZombie.c
*
* Created on: 2010-6-1
*      Author: LiuFeng
*       Email: sohu2000000@hotmail.com
*
*       gcc -g -O2 -Wall -o z makeZombie.c
*/

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

#ifdef UNIX
#define PS "ps -a -O pid, ppid, s,tty,comm"
#else
#define PS "ps axf"
#endif

int main(void)
{
   pid_t pid;
   if ((pid = fork()) < 0) {
   perror("fork error");
   exit(-1);
}
else if (pid == 0)
   exit(0);

sleep(6);     //该睡眠时间可以延长
system(PS);  
//在父进程睡熟的时候,子进程死翘翘了,父进程也就错过了去给子进程收尸的机会,
//这样子进程也就同时编程了有着残留物的zombie进程了!

exit(0);
}


/*
输出:

[root@xxxx src]# gcc -g -O2 -Wall -o z mz.c
[root@XXXX src]# ./z
PID TTY      STAT   TIME COMMAND
    1 ?        S      1:01 init [3]
    2 ?        S      0:14 [migration/0]
    3 ?        SN     0:00 [ksoftirqd/0]
    4 ?        S      0:12 [migration/1]
    5 ?        SN     0:00 [ksoftirqd/1]
    6 ?        S      0:17 [migration/2]
    7 ?        SN     0:01 [ksoftirqd/2]
    8 ?        S      0:13 [migration/3]
    9 ?        SN     0:00 [ksoftirqd/3]
   10 ?        S<     0:00 [events/0]
   14 ?        S<     0:00 \_ [khelper]
   15 ?        S<     0:00 \_ [kacpid]
   69 ?        S<     0:00 \_ [kblockd/0]
   70 ?        S<     0:00 \_ [kblockd/1]
   71 ?        S<     0:00 \_ [kblockd/2]
   72 ?        S<     0:00 \_ [kblockd/3]
   87 ?        S      0:05 \_ [pdflush]
   88 ?        S      0:20 \_ [pdflush]
   90 ?        S<     0:00 \_ [aio/0]
   91 ?        S<     0:00 \_ [aio/1]
   92 ?        S<     0:00 \_ [aio/2]
   93 ?        S<     0:00 \_ [aio/3]
   11 ?        S<     0:01 [events/1]
   12 ?        S<     0:01 [events/2]
1668 ?        S<     0:00 \_ [kmirrord]
1669 ?        S<     0:00 \_ [kmir_mon]
   13 ?        S<     0:00 [events/3]
1626 ?        S<     0:00 \_ [kauditd]
   73 ?        S      0:00 [khubd]
   89 ?        S      0:14 [kswapd0]
166 ?        S      0:00 [kseriod]
231 ?        S      0:00 [scsi_eh_0]
250 ?        S      4:09 [kjournald]
1200 ?        S<s    0:00 udevd
1695 ?        S      0:16 [kjournald]
1696 ?        S      2:02 [kjournald]
1697 ?        S      0:00 [kjournald]
1698 ?        S      0:00 [kjournald]
1699 ?        S     22:28 [kjournald]
1700 ?        S     18:36 [kjournald]
2425 ?        Ss     6:28 syslogd -m 0
2429 ?        Ss     0:00 klogd -x
2440 ?        Ss     0:00 irqbalance
2449 ?        Ss     0:00 portmap
2469 ?        Ss     0:00 rpc.statd
2497 ?        Ss     0:00 rpc.idmapd
2568 ?        Ss     0:00 /usr/sbin/acpid
2628 ?        Ss     6:34 /usr/sbin/sshd
21784 ?        Ss     0:00 \_ sshd: support [priv]
21786 ?        S      0:00 |   \_ sshd: support@pts/0
21787 pts/0    Ss     0:00 |       \_ -bash
21930 pts/0    S      0:00 |           \_ su -
21931 pts/0    S      0:00 |               \_ -bash
29416 pts/0    S+     0:00 |                   \_ ./z
29417 pts/0    Z+     0:00 |                       \_ [z] <defunct>

29418 pts/0    R+     0:00 |                       \_ ps axf
29277 ?        Ss     0:00 \_ sshd: support [priv]
29303 ?        S      0:00      \_ sshd: support@pts/2
29304 pts/2    Ss     0:00          \_ -bash
29329 pts/2    S      0:00              \_ su -
29330 pts/2    S+     0:00                  \_ -bash
2649 ?        Ss     0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
2659 ?        Ss     0:00 gpm -m /dev/input/mice -t imps2
2688 ?        Ss     0:00 /usr/sbin/htt -retryonerror 0
2689 ?        S      0:00 \_ htt_server -nodaemon
2699 ?        Ss     3:43 crond
2727 ?        Ss     0:00 xfs -droppriv -daemon
2746 ?        Ss     0:00 /usr/sbin/atd
2756 ?        Ssl    0:00 dbus-daemon-1 --system
2770 ?        Ss     0:00 cups-config-daemon
2781 ?        Ss    13:19 hald
2793 tty2     Ss+    0:00 /sbin/mingetty tty2
2794 tty3     Ss+    0:00 /sbin/mingetty tty3
2795 tty4     Ss+    0:00 /sbin/mingetty tty4
2796 tty5     Ss+    0:00 /sbin/mingetty tty5
2797 tty6     Ss+    0:00 /sbin/mingetty tty6
22508 tty1     Ss+    0:00 /sbin/mingetty tty1
21630 ?        Ss     0:00 cupsd
[root@XXX src]#

*/

原创粉丝点击