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.



