#include #include "src2/shmh.h" #include #include #include #include using namespace std; static int handle_memfd(void* args, struct fd_msg* msg){ int fd = msg->fd; if (fd > 0){ // struct stat st; // if (fstat (fd, &st)) // { // return -1; // } // printf("st size %ld\n", st.st_size); unsigned char* addr; int len = basic_shm_mmap(fd, &addr); if (len <= 0) { printf("======>> basic_shm_mmap failed\n"); return -1; } printf("======>> mmap len %d msg %s\n", len, addr); basic_shm_unmmap(fd, &addr); basic_shm_close(fd); return fd; } return 0; } int main(int argc, char const *argv[]) { int sock = unix_domain_server_fd("/tmp/memfd_shm.sock", 1); if (sock < 0){ printf("unix_domain_server_fd failed\n"); return 0; } thread t([&sock]{ epoll_loop(sock, NULL, handle_memfd, NULL, NULL); // poll_loop(sock, NULL, handle_memfd, NULL, NULL); // select_loop(sock, NULL, handle_memfd, NULL, NULL); }); t.join(); close(sock); return 0; }