Difference between revisions of "Interacting with the enviroment"

From Organic Design wiki
m
(example output)
Line 41: Line 41:
 
*[[Pipe.c]]
 
*[[Pipe.c]]
 
*[[hello.sh]]
 
*[[hello.sh]]
 +
 +
The output of this program is something like:
 +
<pre>
 +
Begin
 +
pipe(): 3 4
 +
fork() pid 19260
 +
wait() returned with status 0
 +
read(): fetched 83 bytes
 +
hello world!
 +
FOO=foo was set by the child
 +
Child changing foo
 +
FOO=child changed foo
 +
 +
Parent: FOO=foo was set by the parent
 +
</pre>
 +
  
 
=bash=
 
=bash=

Revision as of 22:11, 20 March 2007

Enviroment variables

It's quite simple to read and write environment variables from C:

char *envvar;

if(envvar = getenv("FOO"))
	printf( "FOO=%s\n", envvar );

putenv("FOO=bar");

When you call a child process a copy of the enviroment is passed to this process. However, if the process changes enviroment variables, these changes will be lost once the process terminates.

The parent C program:

putenv("FOO=bar");

system("sh printenv");

if(envvar = getenv("FOO"))
	printf( "FOO=%s\n", envvar );

Executes a shell script (printenv) with system()

echo "printenv: $FOO"
FOO=bar2

The resulting output is:

printenv: bar
FOO=bar

Pipes

The output of this program is something like:

Begin
pipe(): 3 4
fork() pid 19260
wait() returned with status 0
read(): fetched 83 bytes
hello world!
FOO=foo was set by the child
Child changing foo
FOO=child changed foo

Parent: FOO=foo was set by the parent


bash

To connect to a bash shell you can simply do:

cat > bash

This will create an asynchronous connection to the bash process.