我正在尝试在两个进程之间共享一个未命名的马赫信号量。我可以创建一个并在同一过程中等待它。
semaphore_t semaphore = 0;
mach_error_t err = semaphore_create(mach_task_self(), &semaphore, SYNC_POLICY_FIFO, 0);
...
semaphore_wait(semaphore);
但我想将它发送到另一个进程(其中我只有 mach_port_t),然后让它 semaphore_signal 我自己的进程。
我已经尝试过类似的事情:
mach_port_allocate(target, MACH_PORT_RIGHT_RECEIVE, targetSemaphore)
mach_port_insert_right(target, targetSemaphore, semaphore, MACH_MSG_TYPE_COPY_SEND)
这将产生一个错误,因为端口名称已经存在于目标进程中,或者如果我没有在目标进程中分配它,则会产生“未知故障”。
乃至:
mach_msg_send
mach_msg_receive
但是我什至无法从一个进程中获得一个端口来发送任何东西。
我做错了什么,甚至有可能吗?