用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]#
*/
- 用C/C++来在Linux/Unix下面制造僵尸进程
- linux c之孤儿进程与僵尸进程[总结]
- 【C/C++】多进程:僵尸进程
- 在linux下面如何编写C程序
- Unix中的僵尸进程
- Unix/Linux操作系统:孤儿进程与僵尸进程[总结]
- linux c中的僵尸问题
- Linux中用C语言来创建进程
- Unix/Linux编程中所谓"僵尸(zombie/defunct)进程"
- Linux--进程--僵尸进程
- Unix平台防止僵尸进程
- 【UNIX】僵尸进程的处理
- 如何在linux下面配置Vim+c.vim+Ctags+taglist
- 如何在linux下面配置Vim+c.vim+Ctags+taglist
- UNIX C 多进程编程
- UNIX/LINUX C总结
- 【C语言】【unix c】进程的基础
- 【C语言】【unix c】进程的创建
- 马云回答如何做企业
- 关于SAP逻辑系统的事务码:
- 介绍一个实用的form表单控件DG-spinner
- 实现类似路由器那样通过WEB页面配置设备
- addEventListener函数第三个参数的作用
- 用C/C++来在Linux/Unix下面制造僵尸进程
- 网摘:浅析什么时候用抽象类,什么时候用接口?
- HTML解析器 jsoup
- java角度字符串表示形式和double形式的转换
- 提高PHP编程效率的53个要点
- 关于编程,大学没有传授的十件事
- GRUB2 Some Useful Commands
- eclipse快捷工作
- log4net系统日志