#include #include #include #include #include #include "src2/shmh.h" #include int main(int argc, char const *argv[]) { int sock = unix_domain_client_fd("/tmp/memfd_shm.sock", 0); if (sock <= 0){ printf("unix_domain_client_fd failed\n"); return -1; } int count = 0; using namespace std::chrono; auto s = steady_clock::now(); auto e = s; while (true) { int recvfds[16]; memset(recvfds, 0, sizeof(int)*16); int fd = recvfd(sock, recvfds, 16); if (fd < 0){ printf("memfd %d no exist\n", fd); continue; } // struct stat st; // if (fstat (fd, &st)) // { // return -1; // } // printf("st size %ld\n", st.st_size); count++; unsigned char* addr; int len = basic_shm_mmap(recvfds[0], &addr); if (len <= 0) break; printf("======>> mmap len %d msg %s\n", len, addr); basic_shm_unmmap(fd, &addr); for (int i = 0; i < 16; i++) { close(recvfds[i]); } usleep(20000); // e = steady_clock::now(); // if (duration_cast(e-s).count() > 1000){ // s = e; // printf("======>> around 1 s recv count %d\n", count); // _exit(0); // count = 0; // } } close(sock); return 0; }