要求是:生产者进程生成Catalan序列並将其写入到内存共享对象。消费者进程从进程间共享内存的方式中读取并输出序列生产者进程要在命令行指定生成Catalan数的数目。例如命令行指定5,说明生产者进程会生成5个Catalan数:1 2 5 14 42
这里的实现没有显式创建进程因为打开不同的命令行窗口就于创建新进程。
//本函数调用并不刪除所指定的进程间共享内存的方式区而只是将先前用shmat函数连接(attach)好的进程间共享内存的方式脱离(detach)目前的进程 按ctrl+c键退出时会处理這个消息,进行进程间共享内存的方式卸载、删除操作(handle功能),最后exit(0)退出程序 signal函数和书上的信号量signal不一样这里的功能使调用handle函数并把2作为handle的參数 得到IPC通信的key,用于创建进程间共享内存的方式"."表示文件名为当前目录,按照ftok的规则由于我的read程 序也在当前目录,使用的ftok函数的参數相同因此得到的key也相同 创建进程间共享内存的方式,shmId是进程间共享内存的方式标识符 回值为-10666是3位八进制数,6即二进制110表示可读可寫不可执行,从左到右分别对应当前用户 group组用户,其他用户 pAddr = shmat(shmId,0,0); //把进程间共享内存的方式区对象映射到调用进程的地址空间,随后可像本地地址空间一样进行访问第二个参数指定为0让内核决定内存的位置,第三个参数0表示可读写 msg->flag = 0;//当写消息后flag置为0让读文件开始执行读操作,此時写文件不能进行写操作 sleep(1); //停止1s让读进程读取msg指向的数据(进程间共享内存的方式)并输出
确认一键查看最优答案?
本功能为VIP专享开通VIP获取答案速率将提升10倍哦!
两个进程非父子进程,都要对进程间共享内存的方式进行写操作请问用进程间共享内存的方式和信号量如何实现?小弟愚钝想了半天没想出来。
两个类要持有这个进程间共享内存的方式的索引,然后自己互斥操作那个索引即可实现对内存的互斥操作
信号量,不太懂啥意思呵呵~
进程的内存共享模式,应该不是Java能涉及到的
这个应该是C/C++才能涉及到吧。
Java一般都是Socket进行进程间的通信