#include #include #include #include "memfd.h" #include #include #define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \ } while (0) int main(int argc, char *argv[]) { ssize_t i, len; unsigned char* paddr; struct stat st; pid_t pid = 0; int fd = 0; int ret = 0; if (argc != 3) { fprintf(stderr, "%s PID FD\n", argv[0]); exit(EXIT_FAILURE); } pid = atol(argv[1]); fd = atol(argv[2]); fd = basic_shm_open(fd, pid, 1); if (fd <= 0) { errExit("basic_shm_open"); } if (fstat (fd, &st)) errExit ("fstat"); len = st.st_size; printf("length: %zu, atime: %lu.%lu\n", len, st.st_atim.tv_sec, st.st_atim.tv_nsec); ret = basic_shm_mmap(fd, &paddr); if (ret < 0) errExit("basic_shm_mmap"); printf ("start: "); for (i = 0; i < 32; ++i) printf ("%i ", paddr[i]); printf ("\nend: "); for (i = 0; i < 32; ++i) printf ("%i ", paddr[len-32+i]); printf ("\ndone\n"); ret = basic_shm_unmmap(fd, &paddr); if (ret < 0) errExit("basic_shm_unmmap"); basic_shm_close(fd); pause(); exit(EXIT_SUCCESS); }