C語言多執行緒目錄操作
阿新 • • 發佈:2018-12-05
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
#define NUM 2
void thread(void arg)
{
int i;
DIR dir = NULL;
struct dirent ptr = (struct dirent )calloc(1, sizeof(struct dirent));
struct dirent *result = NULL;
for (i=0;i<1;i++) { printf ("in thread:%d\n", (int)arg); dir = opendir("/root/tmp"); if (!dir) { printf("opendir failed\n"); } while ((readdir_r(dir, ptr, &result)==0) && (result != NULL)) { printf("name:%s ", result->d_name); } printf ("\n"); closedir(dir); sleep (1); }
}
int main(void)
{
pthread_t id[NUM];
int i,ret;
for (i=0;i<NUM;i++) { ret = pthread_create(&id[i], NULL, (void *)thread, (void *)i); if (ret) { printf("create pthread error\n"); return 1; } } for (i=0;i<NUM;i++) { pthread_detach(id[i]); } while (1); return 0;
}