![]() |
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| Ringa ett perl-script från ett Perl-skript | new2ss | Shell-programmering och Skript | 6 | 05-24-2009 05:03 |
| att döda en process perl | gurukottur | Shell-programmering och Skript | 2 | 11-20-2006 04:01 |
| Min "bröd och smör" Process bevara Perl Script .... | Neo | Tips och Tutorials | 0 | 01-08-2005 05:17 |
| PERL: vänta på processen för att slutföra | dangral | Shell-programmering och Skript | 2 | 04-21-2004 03:37 |
| Killing en process från perl-script. | sharuvman | Shell-programmering och Skript | 3 | 04-01-2004 12:10 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
#1 (permalänk)
|
|||||
|
|||||
|
Perl: Kör perl skript i den pågående processen
Jag har en fråga om att köra perl i den pågående processen.
Jag skall visa med ett exempel. Titta på det här. Kod:
sh-2.05b$ pwd /tmp sh-2.05b$ cat test.sh #! /bin/sh cd /etc sh-2.05b$ ./test.sh sh-2.05b$ pwd /tmp sh-2.05b$ . ./test.sh sh-2.05b$ pwd /etc sh-2.05b$ Nu, hur kan jag simulera sistnämnda problemet med en perl skript. Jag försökte följande men det hjälpte inte. Kod:
sh-2.05b$ pwd
/tmp
sh-2.05b$ cat test.pl
#! /usr/bin/perl
chdir("/etc");
sh-2.05b$ ./test.pl
sh-2.05b$ pwd
/tmp
sh-2.05b$ . ./test.pl
sh: ./test.pl: line 2: syntax error near unexpected token `"/tmp"'
sh: ./test.pl: line 2: `chdir("/tmp");'
sh-2.05b$
Tack, Vino |
|
#2 (permalänk)
|
||||
|
||||
|
AFAIK perl alltid skapar ett barn.
Finns det en anledning till att du inte kan läsa de andra manus och gör det som de är inom ramen för den pågående processen? dvs., hitta chdir och gör vad det gör i ditt perl script? |
|
#3 (permalänk)
|
|||||
|
|||||
|
Citat:
Jag är nyfiken på om detta kan göras på detta sätt. Tack, vino |
|
#4 (permalänk)
|
||||
|
||||
|
Bara en gissning, men jag tror det. kommando är att ge den aktuella tanken att tolka manus - som det inte går eftersom det har perl kommandon / funktioner i den.
|
|
#5 (permalänk)
|
||||
|
||||
|
Den "exec" inbyggda i bash (sh på Linux verkar vara för) kommer att köra perl process utan att skapa en ny process genom att ersätta den ursprungliga tanken process, precis som C exec * familj av funktioner.
Så du borde kunna köra ett skript med ". / Script.sh" för att skapa en ny process och sedan "exec perl script.pl "att fortsätta verkställigheten utan att införa en ny process, men den ursprungliga tanken skript kommer att säga (kommer inte återvända till tanken manus). Senast redigerad av cbkihong; 12-07-2005 vid 08:52.. |
|
#6 (permalänk)
|
|||||
|
|||||
|
Citat:
Kod:
# ls -l /bin/sh /bin/bash -rwxr-xr-x 1 root root 616312 Dec 7 2004 /bin/bash lrwxrwxrwx 1 root root 4 May 18 2005 /bin/sh -> bash |
|
#7 (permalänk)
|
|||||
|
|||||
|
Citat:
Kod:
sh-2.05b$ pwd
/tmp
sh-2.05b$ cat test.sh
#! /bin/sh
exec perl /tmp/test.pl
sh-2.05b$ cat test.pl
chdir("/etc");
sh-2.05b$ ./test.sh
sh-2.05b$ pwd
/tmp
sh-2.05b$
Jag ändrade test.pl att innehålla Kod:
#! usr/bin/perl
chdir("/etc");
Kod:
#! /bin/sh exec /tmp/test.pl vino |
![]() |
| Komihåglista |
| Taggar |
| linux |
| Thread Tools | Sök i denna tråd |
| Visningslägen | Betygsätt denna tråd |
|
|