whlid 循环不起作用?该怎么解决

whlid 循环不起作用?

#include<stdio.h> //printf
#include<string.h> //strlen
#include<sys/socket.h> //socket
#include<arpa/inet.h> //inet_addr
#include<pthread.h>
#include<unistd.h> //sleep
void *threadhander(void*);
int toserver(int i);

int main(int argc , char *argv[])
{
    for(int i=0;i<10;i++)
    {
        pthread_t thr;
        pthread_create(&thr,NULL,threadhander,(void *)i);
    }
return 0;


void *threadhander(void * fid)
{
    while(1)
    {
       // toserver((int )fid); 
        pthread_t t1;
        t1=pthread_self();

        printf("fid=%d,threadid=%u\r\n",(int)fid,(int)t1);
        sleep(1);
    }
    return 0;
}


以上为什么只输出一次?从0-9 只输出一次。

------解决方案--------------------
main(int argc , char *argv[]) 父进程 结束了...


还有传参 是传的 局部变量pthread_create(&thr,NULL,threadhander,(void *)i);
------解决方案--------------------
主线程结束了, 所有的子线程都会被干掉.