SPAWN and an Associated Mailbox?

本文讨论了在调用LIB$SPAWN过程中遇到的问题及其解决思路。主要涉及如何避免与现有程序中已关联邮箱冲突,包括获取邮箱信息、使用分离进程等方法。

The Question is:

 

 
LIB$SPAWN and associated mailbox
 
To a particular existing program of some vintage I have added a call to a
 routine that in turn calls LIB$SPAWN. This results in the failure status
 %X388F2. {HELP/MESS on that has a fairly useless User Action. It assumes that
 it is a SPAWN command, and not
 a call to LIB$SPAWN.} VMS is V7.3-1
 
Fixing this from an application point of view would seem to result in non-ideal
 modularity and/or elegance.
 
But let's forget about elegance, does VMS provide sufficient interface (e.g.
 $QIOW to the terminal driver) for a routine that wants to call LIB$SPAWN to
 find out the name of the associated mailbox, unassociate it, do the spawn, and
 then reassociate the or
iginal mailbox???
 
In my application the routine that calls LIB$SPAWN always waits for the process
 to complete and the temporary interruption to whatever might wish to be
 written to the original associated mailbox can be tolerated (but I'm not sure
 what DCL might do with un
expected messages in its mailbox).
 
Does the Wizard have any better ideas to fix my application given that SPAWN is
 today the way it is??? The other routine (i.e. the one that is already using
 an associated mailbox) does not appear to offer sufficient interface for me to
 unassociate and res
tore around the call to LIB$SPAWN. I believe that the other routine is doing
 broadcast trapping. For the record I have read 5887. My application is not
 using SMG.
 
Calling SYS$CREPRC to create a subprocess is relatively impractical because the
 subprocess needs access to logical names, not to mention the minor hassle of
 passing the command to the subprocess.
 
Does the Wizard consider this to be a problem in the implementation of SPAWN???
 
Does the Wizard have any blue-sky ideas to share for how to change SPAWN to
 avoid this problem???
 
 

 


The Answer is :

 

 
  Retrofitting capabilities into an older application is not without
  its difficulties.  Obviously.
 
  The user process is apparently utilizing a terminal that has an
  associated mailbox -- SMG is not the only application that uses
  the mailbox, most any application performing broadcast trapping
  or asynchronous terminal processing will utilize one.  (For some
  additional details, please see the I/O User's Reference Manual.)
 
  The associated mailbox information is available via calls to $getdvi.
 
  The OpenVMS Wizard would also look at utilizing a detached process,
  and sharing the necessary logical names with it directly (using a
  shared table, or by passing over the contextual information through
  the communications link) or indirectly (using file storage or such).
 
  As for discussions of this particular (mis)feature of OpenVMS, the
  current use of mailboxes is rather constraining and the OpenVMS
  Wizard might well choose a wholely different approach and solution
  should this area of OpenVMS be re-architected.  The current
  capabilities would obviously have to be maintained.
 
  As for the specific error:
 
$ x = f$message(%X388F2)
$ show symbol x
 
 X = "%CLI-E-TRMMBX, terminal has associated mailbox - terminate image and
then SPAWN"
 
  Within the (undocumented) sys$cli system service interface, the DCL
  command SPAWN and the OpenVMS RTL call lib$spawn both use identical
  underpinnings.
 
内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在三维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值