UDS是Linux较为常用的一种IPC方式,具体用法参考 https://blog.csdn.net/z2066411585/article/details/78966434/
博主今天为验证UDS是否可用于线程之间的通信,写了一个Demo。将主线程作为服务端,子线程作为客户端,主线程向子线程传递数据(该数据存放于堆区),传递后立马在主线程中释放,再在子线程中访问(目的在于验证数据的传递是否为内容的拷贝),代码如下(testUDSacrossThreads.c):
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/stat.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<sys/un.h>
#include<errno.h>
#include<stddef.h>
#include<unistd.h>
#include <pthread.h>
const char* filename = "uds-accross-thread-test";
int fd;
void *thread_enter()
{
int subthreadtid = pthread_self();
printf("subthread: %u, access fd in mainthread %d\n", subthreadtid, fd); // try to access variable in ma