Google Chrome
Hal Duston
hald at kc.rr.com
Fri Sep 5 11:14:54 CDT 2008
On Fri, Sep 05, 2008 at 10:41:07AM -0500, Hal Duston wrote:
> On Fri, Sep 05, 2008 at 09:27:13AM -0500, Monty J. Harder wrote:
> >
> > Yes, they exec to spawn these separate processes. But those processes can't
> > change the arguments under which they were invoked without themselves
> > exec-ing all over again. So when you click on a "Heh.", you'd have to
> > change one process from
> > monster 3952 26665 0 10:08 ? /usr/lib/firefox-4.0/firefox-bin -UILocale
> > en-US instapundit.com
> > to
> > monster 3952 26665 0 10:08 ? /usr/lib/firefox-4.0/firefox-bin -UILocale
> > en-US johndoe.blogspot.com/2008/09/snarky-article-title-here.html
> >
> > The only way I know to do that is to exec firefox-bin, invoking the new URL
> > as an argument. What I don't know is how much overhead that takes. I
> > suppose a stripped-down binary, that inherits a pre-built environment
> > populated by another binary reading configs, etc., might not be doable.
> >
> > But that's not the way that any existing browser I know of is written.
> > You're talking about a complete re-factoring of how browsers work. That's
> > not to say that it's a bad idea, just that it's a non-trivial effort, which
> > might make things much slower
>
> A process can change the arguments at any time w/o doing an exec. I have
> actually read the code that is needed to do this under Linux. It is less
> than 15 lines. All it does is rebuild the environment which is where the
> exec'ed command line arguments are kept. Once they are rebuilt ps, top,
> and everything else just pick them up from /proc/<pid>/cmdline.
>
A quick example I threw together in just a few minutes:
$ wc -l xxq.c
71 xxq.c
$ ./xxq "This process changed its arguments" & ps -f
[1] 1524
UID PID PPID C STIME TTY TIME CMD
hald 1524 32251 0 11:12 pts/7 00:00:00 This process changed its arguments
$ ./xxq "This process changed its parameters" & ps -f
[2] 1532
UID PID PPID C STIME TTY TIME CMD
hald 1532 32251 0 11:13 pts/7 00:00:00 This process changed its parameters
> Thanks,
> --
> Hal
More information about the Kclug
mailing list