Perl Cd Bookshelf [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Perl Cd Bookshelf [Electronic resources] - نسخه متنی

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید



16.3. Replacing the Current Program with a Different One


16.3.1. Problem



You
want to replace the running program with another, as when checking
parameters and setting up the initial environment before running
another program.

16.3.2. Solution


Use the built-in
exec function. If exec is
called with a single argument containing metacharacters, the shell
will be used to run the program:

exec("archive *.data")
or die "Couldn't replace myself with archive: $!\n";

If you pass exec more than one argument, the shell
will not be used:

exec("archive", "accounting.data")
or die "Couldn't replace myself with archive: $!\n";

If called with a single argument containing no shell metacharacters,
the argument will be split on whitespace and then interpreted as
though the resulting list had been passed to exec:

exec("archive accounting.data")
or die "Couldn't replace myself with archive: $!\n";

16.3.3. Discussion


The exec function in Perl is a direct interface to
the execlp(2) syscall, which replaces the
current program with another, leaving the process intact. The program
that calls exec gets wiped clean, and its place in
the operating system's process table is taken by the program
specified in the arguments to exec. As a result,
the new program has the same process ID ($$) as
the original program. If the specified program couldn't be run,
exec returns a false value and the original
program continues. Be sure to check for this.

Recipe 16.2), an indirect object identifies the program to
be run:

exec { '/usr/local/bin/lwp-request' } 'HEAD', $url;

The first real argument ('HEAD' here) is what the
new program will be told it is. Some programs use this to control
their behavior, and others use it for logging. The main use of this,
however, is that exec called with an indirect
object will never use the shell to run the program.

If you exec yourself into a different program,
neither your END blocks nor any object destructors will be
automatically run as they would if your process actually exited.

16.3.4. See Also


The exec function in Chapter 29 of
Programming Perl, and in
perlfunc(1); your system's
execlp(2) manpage (if you have it);
Recipe 16.2



16.2. Running Another Program16.4. Reading or Writing to Another Program




Copyright © 2003 O'Reilly & Associates. All rights reserved.

/ 875