File: passenv.nim

package info (click to toggle)
nim 0.19.4-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 462,356 kB
  • sloc: sh: 11,089; ansic: 4,699; makefile: 706; python: 309; sql: 297; asm: 141; xml: 13
file content (32 lines) | stat: -rw-r--r-- 630 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
discard """
  file: "passenv.nim"
  output: "123"
  targets: "c c++ objc"
"""

import osproc, os, strtabs

# Checks that the environment is passed correctly in startProcess
# To do that launches a copy of itself with a new environment.

if paramCount() == 0:
  # Parent process

  let env = newStringTable()
  env["A"] = "1"
  env["B"] = "2"
  env["C"] = "3"

  let p = startProcess(
    getAppFilename(),
    args = @["child"],
    env = env,
    options = {poStdErrToStdOut, poUsePath, poParentStreams}
  )

  discard p.waitForExit

else:
  # Child process
  # should output "123"
  echo getEnv("A") & getEnv("B") & getEnv("C")