Строка pthread_create() вызывает SIGSEGV
и примерчик падает в кору.
Кто-нибудь в курсе данной проблемы, что может быть не учтено?Образец кода ниже
----
#include <errno.h>
#include <pthread.h>
#include <sys/socket.h>
#include <sys/un.h>
#define socklen_t unsigned int
static void *coms(void *arg)
{
pthread_detach(pthread_self());
printf("Accept TEST\n");
write((int)arg, "Test", sizeof("test"));
printf("Wrote TEST\n");
close((int)arg);
return(NULL);
}
int main(int argc, char **argv)
{
int *confd, len, lisfd;
struct sockaddr_un *client, saun;
lisfd = socket(AF_UNIX, SOCK_STREAM, 0); unlink("/tmp/TS");
saun.sun_family = AF_UNIX; strcpy(saun.sun_path, "/tmp/TS");
bind(lisfd, (struct sockaddr *) &saun, sizeof(struct sockaddr_un));
listen(lisfd, 2); printf("Listening\n");
client = (struct sockaddr_un *)malloc(sizeof(saun));
confd = (int *)malloc(sizeof(int));
for ( ; ; ) {
len = sizeof(saun);
*confd = accept(lisfd, (struct sockaddr *) client, &len);
pthread_create(NULL, NULL, &coms, confd);
printf("PThread created\n");
}
return(0);
}