linuxC 多线程socket中的段异常有关问题

linuxC 多线程socket中的段错误问题
这是服务器端的程序
[code=C/C++][/code] while(1)
{
//通过accopt接受客户端的连接请求,并返回连接套借字 
conn_fd = accept(sock_fd, 
(struct sockaddr *)&cli_addr, &cli_len);
printf("---------------------\n");
printf("accept a new client,ip: %s\n",
inet_ntoa(cli_addr.sin_addr));
//创建一个子进程处理刚刚接受的连接请
  pthread_attr_t child_thread_attr;
  pthread_attr_init(&child_thread_attr);
  pthread_attr_setdetachstate(&child_thread_attr,PTHREAD_CREATE_DETACHED);
  if(pthread_create(&thid,&child_thread_attr,dispose_function ,conn_fd) != 0)
{
printf("thread creation failed!");
}
}
printf("123456");
return 0;
}

服务器端接收两个客户端请求,第一个可以运行出正常结果,第二个程序出现段错误(吐核)导致整个程序的停止

这是为什么?
刚刚学linux编程~希望大家多多指教


------解决方案--------------------
lz注意下,
1.进程和线程是不一样的..进程用fork
2.是lz把线程函数贴出来最好
3.控制线程只创建了一个子线程,也就是说只能连接一个人,第二个人来的时候.就没法连接上
C/C++ code

    while(1){
        clientSk = accept();
        //创建线程
          sleep();
    }

------解决方案--------------------

int pthread_create(pthread_t *restrict thread,
const pthread_attr_t *restrict attr,
void *(*start_routine)(void*), void *restrict arg);

看清回调函数原型, 注意conn_fd是个哪个函数栈上的, 注意是传入副本还是引用.