CreateProcess überträgt alle geöffneten Dateien :/

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

klin

Betreff: CreateProcess überträgt alle geöffneten Dateien :/

BeitragSa, Jul 19, 2008 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi leute,
Ich habe ein dummes Problem seit langem entdeckt... Doch zuerst dachte ich es lag an mir, doch dann war dieses Problem bei anderen auch aufgetreten!
Undzwar, Wenn ich bei meinem Projekt (z.B. "Projekt1.exe") eine Datei öffne und danach CreateProcess("Projekt2.exe") mache, überträgt es alle geöffneten Dateien!
Also sobald ja die Projekt1.exe abstürtzt (Process Terminated oder so) dann wird ja (wiederum dummerweise) das 2te Projekt nicht beendet. Und da ist mir aufgefallen, das ich die Dateien, die ich mit Projekt1.exe geöffnet hatte, nicht beenden konnte!(Dies geht nur solange, bis Projekt2 beendet wurde) Und das ist doch schon nervig :/
Also kann man das i-wie verhindern oder besser gesagt, wenn Projekt1 abgestürtzt ist, das autom. alle CreateProcesse mitbeendet werden? Weil beim normalen beenden gehts, doch beim Absturtzt nicht :/

Also wäre doch schon dankbar =)
THX
MFG
Klin

simi

BeitragSa, Jul 19, 2008 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Am einfachsten wäre es doch, wenn du verhindern würdest, dass das Projekt1 abstürzen kann. Wink Ich würde bei diesem Punkt ansetzten, denn ein Programm sollte ja eigentlich nicht abstürzen. Und wenn du das verhindern kannst, dann hast du zwei Fliegen auf einen Streich erwischt: erstens stürzt dein Programm nicht mehr ab, und zweitens hast du auch noch das Problem mit den geöffneten Dateien gelöst Very Happy

klin

Betreff: Re: CreateProcess überträgt alle geöffneten Dateien :/

BeitragSa, Jul 19, 2008 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
klin hat Folgendes geschrieben:
Hi leute,
...
Also sobald ja die Projekt1.exe abstürtzt (Process Terminated oder so) dann wird ja (wiederum dummerweise) das 2te Projekt nicht beendet. ...
Klin


Also sobald jemand das Programm über Taskmanager beendet meine ich...
Das nenne ich immer abstürtzten^^

THX
MFG
Klin

ozzi789

BeitragSa, Jul 19, 2008 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab da so ne wage/grobe Idee im Kopf rumschwiren .

Beide exes sollen mit einander komunizieren und wen die eine nicht mehr antwortet , dan soll sich das 2te beenden.
Vlt kanst du ja in ne datei schreiben , die 2 liest es und schreibt wieder etwas anderes rein und wenn die datei gleich ist , kanst du draufgehn das die andere Exe nicht mehr da ist Smile

ooooder
es gibt sicher ne dll die die aktiven Tasks rausliest, und wen der Task nicht mehr drinne ist , END Very Happy
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

klin

BeitragSa, Jul 19, 2008 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habs so gemacht, das projekt1.exe eine Datei schreibt und offen lässt. Sobald das Programm abstürtzten sollte, SOLLTE ja auch NORMAL die datei geschlossen werden. Dabei löscht projekt2.exe die ganze Zeit die Datei. Sobald die Datei gelscht worden ist (Wenn sie geschlossen wurde) dann soll Projekt2.exe beenden.
Doch da CreateProcess alle geöffneten Dateien überträgt, kann die Datei nicht geschlossen werden!!!
Aber das mit der Dll würde mich mal Ineressieren...

THX
MFG
Klin
P.S. Wie kann man eig. ein Prozess per BMAX beenden? ^^
 

ChristianK

BeitragSa, Jul 19, 2008 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Lass die beiden Dateien besser anders kommunizieren. Zum Beispiel mit Sockets, oder wenn es nur für Windows sein soll,
mit Named Pipes ( http://msdn.microsoft.com/en-u...65590.aspx ).
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

BtbN

BeitragSa, Jul 19, 2008 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstell einfach einen TCP-Server auf localhost auf einem fixen port. Wenn der port wieder frei ist, weist du, dass das Programm dass den Server erstellt, weg vom Fenster ist.
Oder noch besser: Mutexes

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group