0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include <assert.h>
0017 #include <stdlib.h>
0018 #include <stdio.h>
0019 #include <sys/mount.h>
0020 #include <sys/types.h>
0021 #include <sys/stat.h>
0022
0023 int main(void)
0024 {
0025 struct stat proc_st1, proc_st2;
0026 char procbuff[] = "/tmp/proc.XXXXXX/meminfo";
0027 char procdir1[] = "/tmp/proc.XXXXXX";
0028 char procdir2[] = "/tmp/proc.XXXXXX";
0029
0030 assert(mkdtemp(procdir1) != NULL);
0031 assert(mkdtemp(procdir2) != NULL);
0032
0033 assert(!mount("proc", procdir1, "proc", 0, "hidepid=1"));
0034 assert(!mount("proc", procdir2, "proc", 0, "hidepid=2"));
0035
0036 snprintf(procbuff, sizeof(procbuff), "%s/meminfo", procdir1);
0037 assert(!stat(procbuff, &proc_st1));
0038
0039 snprintf(procbuff, sizeof(procbuff), "%s/meminfo", procdir2);
0040 assert(!stat(procbuff, &proc_st2));
0041
0042 umount(procdir1);
0043 umount(procdir2);
0044
0045 assert(proc_st1.st_dev != proc_st2.st_dev);
0046
0047 return 0;
0048 }