www.pudn.com > pthread_create.rar > pthread_create.c


#include 
#include 

#define NUM 1000

static pthread_mutex_t LOCK, *m_LOCK = &LOCK;

void *hping(int *index) {
			char cmd_buff[512];
			int *index2;
			index2 = (int *)index;
			if (*index2 == 1) {
				sprintf(cmd_buff, "hping2 -1 -a 192.168.255.233 192.168.1.33 &");
				//sprintf(cmd_buff, "");
			} else if (*index2 <= 255) {
				sprintf(cmd_buff, "hping2 -1 -a 192.168.252.%d 192.168.1.33 &", *index2);
			} else if (*index2 <= 511) {
				sprintf(cmd_buff, "hping2 -1 -a 192.168.253.%d 192.168.1.33 &", (*index2-256));
			} else if (*index2 <= 766) {
				sprintf(cmd_buff, "hping2 -1 -a 192.168.254.%d 192.168.1.33 &", (*index2-512));
			} else {
				sprintf(cmd_buff, "hping2 -1 -a 192.168.255.%d 192.168.1.33 &", (*index2-768));
			}
			system(cmd_buff);
			return NULL;
}

int main()
{
	int i = 1, err = 0;
	int b[NUM];
	int start, end;
	int pid1, pid2, pid3, pid4, status;
	pthread_t ptid[NUM];

	if ((pid1 = fork()) == 0) {
		if ((pid2 = fork()) == 0) {
			if ((pid3 = fork()) == 0) {
				if ((pid4 = fork()) == 0) {
					printf("\n***(5)***\n");
					start = 801;
					end = 1000;
				} else {
					waitpid(pid4, &status, 0);
					printf("\n***(4)***\n");
					start = 601;
					end = 800;
				}
			} else {
				waitpid(pid3, &status, 0);
				printf("\n***(3)***\n");
				start = 401;
				end = 600;
			}
		} else {
			waitpid(pid2, &status, 0);
			printf("\n***(2)***\n");
			start = 201;
			end = 400;
		}
	} else {
		waitpid(pid1, &status, 0);
		printf("\n***(1)***\n");
		start = 1;
		end = 200;
	}

	for (i = start ; i <= end ; i++) {
		b[i-1] = i;
		err = pthread_create(&ptid[i-1], NULL, (void *)hping, &b[i-1]);
		//printf("\n%d\n", err);
	}
	return 0;
}