Информация DCL между процессом и подпроцессом
Я пытаюсь передать информацию между основным процессом и подпроцессом (узнавая, как все это работает в процессе), мне нужно получить информацию из подпроцесса, в данном случае это значение g_start. Это способ, которым я видел онлайн, чтобы справиться с этим, если есть лучший способ, пожалуйста, дайте мне знать!
Основной файл содержит
$ 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 не обнаруживается, что я делаю не так, что я не получаю данные для передачи между основными процессами и подпроцессами.
2 ответа
Символы DCL (g_test
) не разделяются между процессами. Использование общих логических имен, например, в таблице заданий, будет работать.
Более сложные коммуникации, например, передача сообщений, могут осуществляться с использованием почтовых ящиков.
РЕДАКТИРОВАТЬ: чтобы уточнить, spawn/symbols
приведет к копированию символов в подпроцесс при создании, но это создаст новый набор символов. Затем родительский процесс идет своим путем, и любые обновления символов в любом процессе происходят независимо.
Я смог решить это, опечатка с моей стороны, я думаю.
Файл 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