[Lazarus] SetEnv on Linux 64bit

Michael Van Canneyt michael at freepascal.org
Tue Apr 3 23:12:07 CEST 2012



On Tue, 3 Apr 2012, waldo kitty wrote:

> On 4/3/2012 09:57, michael.vancanneyt at wisa.be wrote:
>> On Tue, 3 Apr 2012, fred f wrote:
>>> I need to set up LIBOVERLAY_SCROLLBAR=0 on Ubuntu 64bit, but there LIBC is 
>>> not
>>> supported and therefore I am looking for SetEnv which I can use on 64bit 
>>> Linux.
>>> 
>>> SysUtils contains only GetEnvironmentVariable, but not Set...
>> 
>> That's not how it works on Unix/Linux.
>> 
>> You must always set up environment variables before a program starts.
>> When starting a process, the environment for that process is started and is
>> then immutable for the duration of the process.
>
> ewww... so no "fancy" capabilities like we could do in the old DOS days where 
> we could change the base environment as well as cloning it with changes for 
> child processes??? if so, that's blows several of my porting projects up :? 
> :(

Not possible on Posix platforms.

>> What you can do is execute the same binary again, but with the environment
>> variable added to the environment of the new process.
>
> so, like the cloning process i mention above? that would have two copies of 
> the app in memory at once, right?

If you do an fpExec() without first a fpFork() you'll have only 1 copy in memory. 
fpExec replaces the current process with a new process, and a new environment 
can be specified for the new process.

Michael.




More information about the Lazarus mailing list