当前位置:  技术问答>linux和unix

100分求解,不够在加!进程间通信问题,高手请进!

    来源: 互联网  发布时间:2016-06-17

    本文导语:  我在一个进程(proc1)中对sdl进行初始等操,如下  //proc1.c  SDL_Event WndEvent;  SDL_Surface *_Screen ;  SDL_VideoInfo *_pInfo;  SDL_PixelFormat * _pVfmt;  void main(int argc,char* args[])  {  if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER) format;  w...

我在一个进程(proc1)中对sdl进行初始等操,如下 
//proc1.c 
SDL_Event WndEvent; 
SDL_Surface *_Screen ; 
SDL_VideoInfo *_pInfo; 
SDL_PixelFormat * _pVfmt; 


void main(int argc,char* args[]) 

if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER) format; 
while (SDL_WaitEvent(&WndEvent)) 

              .............. 


请问,我如何在另一个进程中(proc2)对第一个进程(proc1)中的_Sreen进程操做(如想画一个矩形等操作)那? 
如 
//proc2.c 
void main(int argc,char* args[]) 

SDL_UpdateRect(_Screen,p ->x,p ->y,p ->cx, p ->cy);//注意,这里的_Screen应是在proc1中定义的 
}

我现在已经将_Screen共享了(用共享内存的方法),可是在proc2中对_Screen操作时就会出错(个人认为sdl是在proc1中初始化,proc2中没有初始化),请高手指点!

|
根据你上边的,_Screen是个指针,它指向的数据空间应该是有SDL_SetVideoMode函数分配的,释放也是由相应的函数来指向;再着它是一个结构体指针,其结构成员也可能是指针,会分配空间。如果仅仅共享了_Screen指向的空间,那你另一个进程仍然不能共享该结构的所有数据。

|
main() {

while (command = read_from_control_socket())
{
  command->do();
}
}

void OpenGLCommand::do() 
{
  glBegin();
    glXXX();
    glYYY();
  glEnd();
}

void FileOpCommand::do()
{
  FILE *fp = fopen(...);
  fclose(fp);
}

|
感觉还是用共享内存比较好
你这是不是win的,proc1做了共享内存,但proc2怎么知道它在哪里呢?

在l下,共享内存会有一个标识,改标识是在固定的路径下,让后面要读该共享内存的内容的进程知道该路径
这样,这些进程就可以知道那块内存地址在哪里了,而你这个程序中,proc2好像没有去找到那块内存区,而是
直接去访问那个变量,当然找不到了。

最好在看看,在你这个平台下共享内存怎么用的

|
典型不能这么做。进程1中设计一个接口,譬如通过 FIFO/PIPE 之类接受进程2发的消息(格式自己定义),然后执行相应的操作。简单的说就是一个 C/S 模式的架构。

|
fusion是一个多进程间实现共享的东西,本身也是C语言实现的。

|
openGL需要硬件支持的吧

|
其实fusion采用共享内存的方式是可以这样做的,不过比较复杂。
要学习不少东西。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求解 求解 求解
  • Linux Shell编程从初学到精通 第四章课后习题2 求解
  • 有限元求解器 GetDP
  • 偏微分方程求解工具箱 DUNE
  • linux命令求解释....
  • 偏微分方程求解框架 Overture
  • 100分求解!!!!!
  • 编译内核时候出现的问题,求解
  • makefile求解
  • 求解ucos ii的一句代码
  • 求助linux下mysql 求解!
  • 求解啊,centos下 shutdown -h now 无效??
  • 求解windows下硬盘安装linux如何用linux引导
  • 关于linux shell的一个不明白的地方。求解
  • solaris安装不上,求解.............
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket
  • ubuntu12.04求解
  • 100分求解如何查看内存最高使用值!!
  • 高分求解---如何在DOS下查杀欢乐时光病毒?用哪种杀毒软件?Windows98没法进入了!
  • 求解struct的大小


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3