进程和子进程之间的DCL信息
我试图在主进程和子进程之间传递信息(学习如何在进程中工作)我需要从子进程获取信息,在这种情况下,g_start的值。这是我在网上看到的处理方式,如果有更好的方法,请让我知道!进程和子进程之间的DCL信息
主要文件包含
$ define/job/nolog g_start false
$ g_test == 6
$ spawn @test.com
$ if f$trnlnm(g_start) .eqs. true
$ then
文件test.com包含:
$ If g_test .nes. 5
$ then
$ define/job g_start true
$ endif
$ logout
当运行主文件g_test没有找到什么我做错了,我不是让数据传递在主进程和子进程之间来回切换。
DCL符号(g_test
)不在进程之间共享。使用共享的逻辑名称,例如在工作表中,将工作。
更高级的通信,例如传递消息,可以使用邮箱完成。
编辑:为了澄清,spawn/symbols
将导致在创建时将符号复制到子进程,但会创建一组新的符号。父进程然后进入其快乐的方式,任何进程中的任何符号更新都是独立进行的。
那么$ define/job g_start true不会设置共享逻辑名称? VMS/DCL完全新版对不起 – user1943219 2013-02-20 16:33:18
@ user1943219 - 是的,'define/job'设置共享逻辑的值。作业中的任何进程(即进程树)都可以在作业表中创建/读取/更新/删除(CRUD)逻辑。由于该表是共享的,所有进程都会看到任何更改。 – HABO 2013-02-20 18:27:34
我能解决这个问题,我猜猜我是错的。
文件1:
$ define/job g_start false
$ g_test == 6
$ spawn @test.com
$ result = f$trnlnm("g_start")
$ write sys$output ''result'
$ if (''result' .eq. "true")
$ then
文件2:
$ If g_test .nes. 5
$ then
$ define/job g_start true
$ endif
$ logout
拿出'spawn'确实简化了一些事情。另一个错字? – HABO 2013-02-20 18:29:09
是的,当从记事本复制/粘贴时,我错过了spawn命令,它在工作副本中。以上更新 – user1943219 2013-02-21 15:02:07
你大概意思thave周围的逻辑名称引号:'F $ trnlnm( “g_start”)'。 – HABO 2013-02-20 18:29:59