Thread Echten Parallelprozess unter Linux (42 answers)
Opened by bianca at 2013-11-01 11:00

jan
 2013-11-01 11:39
#171698 #171698
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
was meinst Du mit "warten"?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl
use strict;

if(my $pid = fork()) {
for (0..5) {
print "original: " . $_ . "\n";
sleep(1);
}
}
else {
for (0..10) {
print "forked: " . $_ . "\n";
sleep(1);
}
}
print "exiting\n";
exit;


führt hier zu:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
jan@jlubuntu ~/www/test/forktest $ perl fork.pl 
original: 0
forked: 0
original: 1
forked: 1
original: 2
forked: 2
original: 3
forked: 3
original: 4
forked: 4
original: 5
forked: 5
exiting
forked: 6
jan@jlubuntu ~/www/test/forktest $ forked: 7
forked: 8
forked: 9
forked: 10
exiting


das parent exitted früher und daher kriege ich einen neuen prompt. Der geforkte Prozess läuft weiter.

Und mit system:
1.pl:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl
use strict;

system("./2.pl &");

for (0..5) {
print "1: " . $_ . "\n";
sleep(1);
}
print "exiting\n";
exit;


2.pl:
Code: (dl )
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl
use strict;

for (0..10) {
print "2: " . $_ . "\n";
sleep(1);
}
print "exiting\n";
exit;


Output:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
jan@jlubuntu ~/www/test/forktest $ perl 1.pl 
jan@jlubuntu ~/www/test/forktest $ perl 1.pl
1: 0
2: 0
1: 1
2: 1
1: 2
2: 2
1: 3
2: 3
1: 4
2: 4
1: 5
2: 5
exiting
jan@jlubuntu ~/www/test/forktest $ 2: 6
2: 7
2: 8
2: 9
2: 10
exiting

View full thread Echten Parallelprozess unter Linux