关于进程间通信

在某进程中使用fd_sys=open("/dev/serv",O_RDWR);

在此进程中使用MsgSend(fd_sys,&msg,sizeof(msg),&replied,sizeof(replied));发送消息

如果我在另一个进程中也要给fd_sys 发送消息好像行不通啊,怎样做呢?

“另一进程”是什么?与A完全无关的进程B?

A进程中起动了进程B,B是A的子进程吧,

在A中fd_sys=open("/dev/serv",O_RDWR);

然后在B中使用 MsgSend(fd_sys,&msg,sizeof(msg),&replied,sizeof(replied));发送消息

编译的时候就说fd_sys没有定义,但是A进程中定义的fd_sys,怎样在B进程中使用啊。难道要使用共享内存吗?

初学,问题都比较弱,见笑了,呵呵。

请问 ,fb,coid这都怎么用啊
没学明白
来瞅瞅

你这个问题,涉及到一些Unix关于进程的基本概念。与QNX并没有太直接的关系。

简单的说,open()返回的是一个"文件描述符“ (File Descriptor, 所以通常大家为变量名起个名字叫 fd)。

”文件描述符“是个进程的属性,也就是说换了一个进程,同一文件描述符就没有作用了,要各进程自己设。

”子进程“是可以从”父进程“那里继承fd的,但不是自动就继承所有fd。通常是父进程在创建子进程时指定的。所以取决于具体你的子进程是怎样(用什么函数)创建的。

最后,就算子进程继承了fd,也不是说父进程里的变量”fd_sys"就可以直接引用的。还是需要将继承下来的fd值重新赋值给某个变量才可以用的。

除非你有很特殊的原因,否则一般在子进程B里再做一次 fd_sys=open(…) 要容易得多。