在使用readdir函数开线程是遇到一个问题:readdir返回的结构体的内存空间被覆盖了!
44 mList = createList();
45 Read_DIR_mp3(PATH,mList);
46
47 printf("you can use <H>or<h> to get help\n");
48
49 signal(SIGCHLD,Receive);
50 signal(SIGINT,No_Exit);
51 srand(time(NULL));//设置随机数种子
52
53 memcpy(shm_addr,pos,4096);//初始化共享内存
54 showNode(mList);
55
56 if(-1 == pthread_create(&pthread_id,NULL,(void *)thread,NULL))
57 {
58 perror("Pthread Create error");
59 exit(-1);
60 }
61 showNode(mList);
这一段函数中ShowNode(mList)是打印链表,Read_DIR_mp3函数用来读取指定目录下的.mp3格式的文件并放入以mList为首节点的链表中
可以看到对于同一个链表打印的内容却不同,在开启子线程后缺失了很多内容!
我的链表结点是这样定义的:
10 typed