Schrift
[thread]6845[/thread]

Hilfe: kann im fork keine Variable ändern



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
Froschpopo
 2005-04-05 05:42
#53252 #53252
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Ziemlich knifflig befürchte ich:

Wie kann ich es machen, dass in dem forking der $name sofort auch für die Eltern geändert wird und zwar direkt ab der neuen Variablen-Zuweisung (vor sleep)

Code: (dl )
1
2
3
4
5
6
7
8
9
my $name = 'otto';
my $pid = fork();

unless($pid) {
    $name = 'klaus';
            sleep(5);
            exit;
}
print "Alter Name: $name\n"; # Name ist immernoch 'otto'
\n\n

<!--EDIT|Froschpopo|1112665453-->
sri
 2005-04-05 09:30
#53253 #53253
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Unser taeglich Forshpopo gib uns heut...wie kann einer alleine nur sooo viele Fragen haben...

Das geht mit shared memory...zumindest auf Unix...

Nimm doch einfach POE
Froschpopo
 2005-04-05 11:48
#53254 #53254
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
meinste so?
Code: (dl )
1
2
3
4
5
6
7
8
9
my $glob = "hm";
unless($pid) {
$glob = "Gruß vom Kind an die Mutter";
outside($glob);
CORE::exit;
}
sub outside {
print "$_[0]\n";
}

Ok, damit hätten wir gelöst, wie man Variablen rausschmugeln kann. Aber wie bekomme ich jetzt Variablen dort hinein die erst nach dem fork()-Aufruf definiert werden?
sri
 2005-04-05 11:58
#53255 #53255
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Nein, shared memory!
Siehe auch IPC::Shareable, IPC::ShareLite...

Aber ob das auf win32 funktioniert...
renee
 2005-04-05 12:13
#53256 #53256
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hast Du Dir meinen Wiki-Artikel zu Wiki:fork() wirklich mal durchgelesen?? Da wird eindeutig gesagt, dass die Variablen kopiert werden und dadurch nicht im Parent-Prozess verändert werden können.

Eine Lösung (neben POE ;) @sri) ist die pipe. Aber alles beschriben im Wiki:Wiki-Artikel ...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
sri
 2005-04-05 12:21
#53257 #53257
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=renee,05.04.2005, 10:13]Hast Du Dir meinen Wiki-Artikel zu Wiki:fork() wirklich mal durchgelesen?? Da wird eindeutig gesagt, dass die Variablen kopiert werden und dadurch nicht im Parent-Prozess verändert werden können.

Eine Lösung (neben POE ;) @sri) ist die pipe. Aber alles beschriben im Wiki:Wiki-Artikel ...[/quote]
Jaja, daten mit Storable serialisieren und dann length prefixed ueber die pipe...

Aber wer einmal POE benutzt hat macht solche kranken Sachen NIE WIEDER! ;)
Froschpopo
 2005-04-06 02:16
#53258 #53258
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
das ist ja ein ganz nettes beispiel da in eurer wiki, aber ich will ja eben einen kindprozess haben, damit der Elternprozess sich mal entspannen kann. Mein Tk-Programm schläft ja trotzdem ein, wenn der Elternprozess auf Antworten vom Kind warten muss.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
pipe(READER,WRITER);

my $pid = fork();

if($pid == 0){
# Hier bin ich im Child-Prozess
close READER;
my $ort = 'bei Freunden';
print "Ich bin ",$ort,"\n";
print WRITER $ort;
exit(0);
}
else{
# Hier bin ich im Parent-Prozess
close WRITER;
while(my $line = <READER>){
print "Ach, Du bist also ",$line,"\n";
}
wait();
# hier läuft ein Tk-Programm welches nichtmehr reagiert.

}
sri
 2005-04-06 02:28
#53259 #53259
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
perldoc -f select

Nimm doch einfach POE!!! Und all diese Probleme sind geloest, mkay?
Froschpopo
 2005-04-06 02:37
#53260 #53260
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Kannst du mir kurz mal ein beispiel zeigen wie du das mit POE machen würdest?
hauptsache das funktioniert auf möglichst allen Betriebssystemen !
sri
 2005-04-06 04:37
#53261 #53261
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2005-04-05 05:42.