How do I export a environmental variable to a C program?

Discussion in 'C Programming' started by iavian, May 9, 2008.

  1. iavian

    iavian Guest

    Hi all ,

    I want to set a env variable in a C program? . Not through shell env
    variables. Any help?

    Thanks
    Vijay
    iavian, May 9, 2008
    #1
    1. Advertising

  2. iavian

    Guest

    In article <>,
    iavian <> wrote:
    >Hi all ,
    >
    >I want to set a env variable in a C program? . Not through shell env
    >variables. Any help?


    How an environment variable gets set is beyond the scope of the C
    language.
    They're typically assigned through an OS-defined mechanism when the
    process is created. A newsgroup whose scope includes how to start
    processes on your OS may be able to provide more specific guidance.

    Many C implementations also provide extensions that allow environment
    variables to be set from within the program. Your implementation's
    documentation may shed some light on that.


    dave

    --
    Dave Vandervies dj3vande at eskimo dot com
    He'll be buried face down, nine edge first. Unlike most people of whom
    that is said, in his case, it's a compliment.
    --Richard Bos, on John Backus, in comp.lang.c
    , May 9, 2008
    #2
    1. Advertising

  3. On 9 May 2008 at 17:26, iavian wrote:
    > I want to set a env variable in a C program? . Not through shell env
    > variables. Any help?


    What do you mean "not through shell env variables"?

    If you're on a POSIX system, check out setenv() and putenv().
    Antoninus Twink, May 9, 2008
    #3
  4. In article <>,
    iavian <> wrote:

    >I want to set a env variable in a C program? . Not through shell env
    >variables. Any help?


    C does not provide any mechanism to set environment variables.

    It is common for OSes to provide a setenv() routine in their libraries.

    Note that when OSes do so provide, often setenv() only affects
    the environment of the running program and any programs that it
    invokes after that point, such as by system() or by OS routines
    such as exec*() . Unix-like systems often have *no* mechanism
    that would allow a program to change the environment variables of
    other programs that are already running.

    --
    "All is vanity." -- Ecclesiastes
    Walter Roberson, May 9, 2008
    #4
  5. iavian <> wrote:
    > I want to set a env variable in a C program? . Not through shell env
    > variables. Any help?


    This is not a C question since this only depends on how your
    shell handles things. But, that out of the way, you simply
    can't do that (at least with no shell I ever heard of). Your
    C program is a process started by your shell and such a child-
    process can never change anything in its "parent" process.

    The only thing you can do is to have the the program output
    something the shell then explicitely executes, like (e.g.
    using bash):

    ---- env_cmd.c -----

    #include <stdio.h>

    int main( void )
    {
    puts( "export X=AAA" );
    return 0;
    }

    --------------------

    and then do e.g.

    > gcc -o env_cmd env_cmd.c
    > `./env_cmd` # note the backticks
    > echo $X

    AAA
    Regards, Jens
    --
    \ Jens Thoms Toerring ___
    \__________________________ http://toerring.de
    Jens Thoms Toerring, May 9, 2008
    #5
  6. (Jens Thoms Toerring) writes:
    > iavian <> wrote:
    >> I want to set a env variable in a C program? . Not through shell env
    >> variables. Any help?

    >
    > This is not a C question since this only depends on how your
    > shell handles things. But, that out of the way, you simply
    > can't do that (at least with no shell I ever heard of). Your
    > C program is a process started by your shell and such a child-
    > process can never change anything in its "parent" process.


    The OP didn't seem to be asking about propagating the setting to the
    parent process (assuming that "parent process" is meaningful). As far
    as I can tell, the POSIX setenv() function (not standard C) would
    satisfy the requirement he stated. Whether it would satisfy his
    actual requirement is another question.

    <OT>In Unix-like systems, there are various ways for a process to set
    one of its own environment variables in response to information from a
    child process. You demonstrated one of them in part of your article
    that I ruthlessly snipped; other ways are possible.
    comp.unix.programmer would be a better place to discuss it -- after
    checking any FAQ lists, since this kind of question comes up
    frequently.</OT>

    --
    Keith Thompson (The_Other_Keith) <>
    Nokia
    "We must do something. This is something. Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
    Keith Thompson, May 9, 2008
    #6
  7. iavian

    iavian Guest

    Thanks for all who replied ..

    I am writing a function for postgres in C which connect to Oracle
    db .. postgres accepts a shared object to be loaded . So, when the .so
    is loaded inside postgres , .so could find oracle environments.. I am
    not sure what should be the best way to do it ..

    whenever a row is inserted in postgres , a trigger will call this C
    function which connects to oracle and inserts the record in Oracle db

    Any pointers?

    My problem is
    On May 9, 2:52 pm, Keith Thompson <> wrote:
    > (Jens Thoms Toerring) writes:
    >
    > > iavian <> wrote:
    > >> I want to set a env variable in a C program? . Not through shell env
    > >> variables. Any help?

    >
    > > This is not a C question since this only depends on how your
    > > shell handles things. But, that out of the way, you simply
    > > can't do that (at least with no shell I ever heard of). Your
    > > C program is a process started by your shell and such a child-
    > > process can never change anything in its "parent" process.

    >
    > The OP didn't seem to be asking about propagating the setting to the
    > parent process (assuming that "parent process" is meaningful). As far
    > as I can tell, the POSIX setenv() function (not standard C) would
    > satisfy the requirement he stated. Whether it would satisfy his
    > actual requirement is another question.
    >
    > <OT>In Unix-like systems, there are various ways for a process to set
    > one of its own environment variables in response to information from a
    > child process. You demonstrated one of them in part of your article
    > that I ruthlessly snipped; other ways are possible.
    > comp.unix.programmer would be a better place to discuss it -- after
    > checking any FAQ lists, since this kind of question comes up
    > frequently.</OT>
    >
    > --
    > Keith Thompson (The_Other_Keith) <>
    > Nokia
    > "We must do something. This is something. Therefore, we must do this."
    > -- Antony Jay and Jonathan Lynn, "Yes Minister"
    iavian, May 11, 2008
    #7
  8. iavian <> writes:
    > I am writing a function for postgres in C which connect to Oracle
    > db .. postgres accepts a shared object to be loaded . So, when the .so
    > is loaded inside postgres , .so could find oracle environments.. I am
    > not sure what should be the best way to do it ..
    >
    > whenever a row is inserted in postgres , a trigger will call this C
    > function which connects to oracle and inserts the record in Oracle db
    >
    > Any pointers?


    I think you've already been advised to ask in comp.unix.programmer (I
    assume you're using a Unix-like system). That's the best advice
    you're going to get here.

    --
    Keith Thompson (The_Other_Keith) <>
    Nokia
    "We must do something. This is something. Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
    Keith Thompson, May 11, 2008
    #8
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Kourosh
    Replies:
    2
    Views:
    901
    Joe Kesselman
    May 20, 2006
  2. timr
    Replies:
    2
    Views:
    113
    Robert Klemme
    Jan 20, 2009
  3. John Smith

    Environmental variable for CGI proxy

    John Smith, May 16, 2006, in forum: Perl Misc
    Replies:
    1
    Views:
    151
    Gunnar Hjalmarsson
    May 16, 2006
  4. Replies:
    4
    Views:
    117
    Martijn Lievaart
    Mar 5, 2007
  5. Replies:
    3
    Views:
    115
    Martin Honnen
    Sep 28, 2005
Loading...

Share This Page