多进程访问类指针的代码
时间: 2023-10-05 13:09:57 浏览: 76
多进程访问类指针的代码需要使用进程间通信技术,例如共享内存或者消息队列。以下是一个使用共享内存访问类指针的示例代码:
```c++
#include <iostream>
#include <cstring>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <unistd.h>
class MyClass {
public:
void print() {
std::cout << "Hello from MyClass!" << std::endl;
}
};
int main() {
int shmid = shmget(IPC_PRIVATE, sizeof(MyClass), IPC_CREAT | 0666);
if (shmid < 0) {
std::cerr << "Failed to create shared memory!" << std::endl;
return 1;
}
MyClass* ptr = static_cast<MyClass*>(shmat(shmid, nullptr, 0));
if (ptr == reinterpret_cast<MyClass*>(-1)) {
std::cerr << "Failed to attach shared memory!" << std::endl;
return 1;
}
pid_t pid = fork();
if (pid < 0) {
std::cerr << "Failed to fork!" << std::endl;
return 1;
}
else if (pid == 0) {
// Child process
ptr->print(); // Access the class pointer in shared memory
return 0;
}
else {
// Parent process
wait(nullptr);
shmdt(ptr);
shmctl(shmid, IPC_RMID, nullptr);
return 0;
}
}
```
这个示例代码创建了一个 `MyClass` 类型的共享内存,并且 fork 出一个子进程,子进程访问共享内存中的类指针,并且调用了 `print()` 函数。注意到在父进程中,需要等待子进程完成后,释放共享内存。
阅读全文