- 论坛徽章:
- 0
|
为什么我的压力测试程序让通讯进程死掉几个?是不是如下代码的线程没有退出?
我输入的第一个参数,也就是fork的数量是10,过一段时间也让通讯进程死了几个.
输入100和几百结果都一样.
如下是程序片断
int main(int argc, char **argv)
{
int iLoop, iPid;
iLoop = iPid = 0;
if(argc != 2)
{
fprintf(stderr, "Usage: %s + number!\n", argv[0]);
fflush(stderr);
return -1;
}
for(iLoop = 1; iLoop <= atoi(argv[1]); iLoop ++)
{
iPid = fork();
if(iPid == 0)
{
fflush(stdout);
AlarmSend();
}
else if(iPid < 0)
{
fprintf(stderr, "FORK failed, errno = [%d], msg = [%s]!\n",
errno, strerror(errno));
fflush(stderr);
return -1;
}
}
exit(0);
}
void AlarmSend()
{
long lAlarm;
lAlarm = 0L;
/*modified by bx*/
while(1)
{
/* 为什么这样的模式不行?
signal(SIGALRM, alarm_send);
*lAlarm = GetRam(0, 10);*
alarm(lAlarm);
*/
pthread_t pth;
lAlarm = GetRamdom(0, 10);
pthread_create(&pth,NULL,alarm_send,NULL);
sleep(lAlarm);
}
}
发送报文的代码略...
void alarm_send( void *haha){
...
return}
[ 本帖最后由 bluesgone 于 2008-1-22 16:12 编辑 ] |
|