Schrift
[thread]5905[/thread]

forken unter win32: die super " fork " funktion

Leser: 3


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
J33d3X
 2003-11-13 23:54
#71682 #71682
User since
2003-11-13
15 Artikel
BenutzerIn
[Homepage] [default_avatar]
wenn Sie denn mal hinhauen würde:

ich habe ein tool mit win32-gui, jett sollen im hintergrund mehrere prozesse laufen ( KEINE EXTERNEN ) ich wollte es mit

fork

versuchen doch leider schließt sich mein programm beim beenden des LETZTEN childprozesses

meine frage: gibt es da eine möglichkeit ?
( ausser die dist. 5.08 von perl - da haut es auchnicht hin )

thx\n\n

<!--EDIT|J33d3X|1068760493-->
esskar
 2003-11-14 01:22
#71683 #71683
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
1) wie beendest du den child prozess?
2) du känntest versuchen mit Win32::API die Funktion

Code: (dl )
1
2
3
4
5
6
7
8
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
SIZE_T dwStackSize, // initial stack size
LPTHREAD_START_ROUTINE lpStartAddress, // thread function
LPVOID lpParameter, // thread argument
DWORD dwCreationFlags, // creation option
LPDWORD lpThreadId // thread identifier
);

aus kernel32.dll aufzurufen und damit zu arbeiten!
J33d3X
 2003-11-14 07:15
#71684 #71684
User since
2003-11-13
15 Artikel
BenutzerIn
[Homepage] [default_avatar]
beenden wollte ich mit last

bsp.:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#================================================
sub Button_EVILS_Click { # Button Klick
$count = 0;
my $pid = undef;
if(-e $config{"SRS"}){#
}else{&errmsg;}
open(FILE, "$config{\"SRS\"}");
my @sfile = <FILE>;
close FILE;
foreach $x (@sfile){ $pbmax++; }
$Main->RSPB->SetRange(0, $pbmax);
$x = undef;
foreach $x (@sfile){
chomp $x;
if(defined($pid = fork)){
if($pid){
last;
} else {
$count++;
$Main->RSPB->SetPos($count);
open(README, "meine.exe $x 1 |");
my @res = <README>;
close README;
$Main->RichEdit->Text("$x\n\n@res");
my @news = split / /,$res[6];
if($news[0] eq "ok"){
$List_rs->AddString("$x");
}
}
}
}
}
#================================================




werd mich mal in die Win32::API einlesen

Danke für die Antwort
esskar
 2003-11-14 07:41
#71685 #71685
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
hmmm... hast du schonmal in erwägung gezogen, dass du den parent schließt und nicht den client?

Quote
perldoc -f fork

Does a fork(2) system call to create a new process running the
same program at the same point. It returns the child pid to the
parent process
, 0 to the child process, or "undef" if the fork
is unsuccessful.
...
\n\n

<!--EDIT|esskar|1068788515-->
J33d3X
 2003-11-14 07:49
#71686 #71686
User since
2003-11-13
15 Artikel
BenutzerIn
[Homepage] [default_avatar]
wenn der letzte client ( child ) beendet wird - zurückkehrt dann soll der parent auch geschlossen werden
da die child sich nach erledigung selbst schliessen ich brauche die möglichkeit der fork funktion da nach jedem child die Prozessbar zum beispiel um eine position weiter gesetzt werden soll ( dies ist aber mit Prozess & ähnliches ) nicht machbar da das gui " still steht " bis alle prozesse erledigt sind ( und das ist sehr unschön, wenn in der "winleiste" steht "keineRückantwort" und das solange bis alle prozesse zuende sind :(
esskar
 2003-11-14 08:00
#71687 #71687
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ProgessBar???

sag das doch gleich...

Package Win32::GUI::ProgressBar

immer schon POD's lesen! :P\n\n

<!--EDIT|esskar|1068789675-->
J33d3X
 2003-11-14 08:20
#71688 #71688
User since
2003-11-13
15 Artikel
BenutzerIn
[Homepage] [default_avatar]
nice ...

aber PB ist doch nicht das einzige / das programm soll wärend der ausführung der prozesse
weiter vollfunktionsfähig sein
esskar
 2003-11-14 09:23
#71689 #71689
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
welcher prozess?

bestimmten prozesse in anderes perlscripta auslagern und mit Win32::Process einbinden!
J33d3X
 2003-11-14 09:57
#71690 #71690
User since
2003-11-13
15 Artikel
BenutzerIn
[Homepage] [default_avatar]
thx ich werd es mir mal durch den kopf gehen lassen ob man diesen teil nicht in ein externes script auslagern kann ( wobei das hauptsrict ja auch "wartet" bis das aufgerufene script fertig ist )

;)
esskar
 2003-11-14 12:51
#71691 #71691
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=J33d3X,14.11.2003, 08:57]thx ich werd es mir mal durch den kopf gehen lassen ob man diesen teil nicht in ein externes script auslagern kann ( wobei das hauptsrict ja auch "wartet" bis das aufgerufene script fertig ist )

;)[/quote]
darauf kannst du dir einen event geben lassen...
musst also nicht warten...
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2003-11-13 23:54.