【发布时间】:2018-02-14 21:37:23
【问题描述】:
我正在尝试使用 mmap 将当前目录中的所有文件名存储在共享数组中,我可以将目录中的所有 9 个文件打印到屏幕上,但是当我尝试将它们存储在数组 (shared_array) 中并打印数组时,所有条目都包含相同的字符串 (file.txt)。提前致谢!
char **shared_array;
shared_array= mmap(0,100*sizeof(char*),PROT_READ | PROT_WRITE,MAP_SHARED | MAP_ANON,-1,0);
char * filename;
const MAXLINE = 80;
char line [MAXLINE];
FILE *fp = popen("/bin/ls","r");
int i = 0;
while(fgets(line, MAXLINE,fp) !=NULL){
filename = line;
shared_array[i] = filename;
i++;
}
pclose(fp);
int j;
for(j=0;j<i;j++){
printf("\n%s",shared_array[j]);
}
【问题讨论】:
-
共享内存中的指针通常没有用处,因为它们指向的地址是特定于进程的。