Pass variable from a child to parent in KSH

后端 未结 2 923
独厮守ぢ
独厮守ぢ 2020-12-22 08:53

I have to work with KSH (yeah that hell shell). I need to use a fork, a subroutine as following:

    #!/bin/ksh

    PIPE=PIPE_$$
    PIPE_ERR=PIPE_ERR_$$

          


        
2条回答
  •  感动是毒
    2020-12-22 09:26

    A shell variable is just a piece of memory inside the running shell process. An Environment Variable is a variable that the shell copies into its environment prior to calling another program.

    To understand the limitations of Environment Variables, one must understand the concept of the environment of a process: It's a single section of memory that is not shared between processes, but passed on from one process to another during an exec system call. (See also: Environment Variables)

    The environment gets passed on from one process to the next, and subsequent processes can change it prior to calling another program.

    This environment also has certain restrictions: It can consist only of a list of nul-terminated strings, terminated by a null-pointer. Essentially, it's an array of strings.

    Note that these strings do not need to follow the VARNAME=value structure, which is a convention adopted by early unix shells.

    ksh93 does support shell co-processes, though.

    After starting a child process, the parent can connect to the child's stdin and stdout with the <& p and >& p redirection operators. It can be a challenge to handle these correctly, as many operations close their stdout on termination, which will close the pipe to the child.

提交回复
热议问题