gpt4 book ai didi

c - 在下面的结构成员中存储本地 ipc 缓冲区的地址并传递到 ipcwrite 导致数据损坏

转载 作者:太空宇宙 更新时间:2023-11-04 08:01:09 26 4
gpt4 key购买 nike

我正在声明一个结构,其中一个结构成员是一个指针,它存储了 IPC 缓冲区的地址。ipc_buffer 是一种方法的本地方法,当我将同一缓冲区的地址传递给另一个函数并通过 IPCWrite() 发送时,观察到 IPC_recevie 端的数据损坏?任何人都可以在这里指出为什么数据已损坏吗?

typedef struct ev_entry_s
{
event_t ev_id;
uint8_t *ipc_local_async_buff;
uint32_t ev_data_size;
uint8_t ev_data[0];
}ev_entry_t;

fun_1()
{
uint8_t ipc_buffer[IPC_MAX_SEND_LEN];
fun_2(&ipc_buffer); /*sending as a parameter */
}
fun_2(uin8_t *catch_pointer)
{
ev_entry_t event_p;
//Storing ipc_buffer addres in ipc_local_async_buff
event_p.ipc_local_async_buff = catch_pointer;
fun_3(&event_p);
}
fun_3(ev_entry *event_p)
{
/*sending the address of ipc_buffer over IPCWrite*/

}

最佳答案

Linux 进程默认不共享内存。分配给一个进程的内存不会分配给其他进程。

指针根本无法在进程之间共享。

您需要使用共享内存。并且不发送指针,而是为共享内存段命名,以便其他进程可以找到它。然后使用其他一些 IPC 机制向其他进程发出可以读取内存的信号。

关于c - 在下面的结构成员中存储本地 ipc 缓冲区的地址并传递到 ipcwrite 导致数据损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46746003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com