Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Mal ganz "platt" gefragt...

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 27.08.2008, 15:05    Titel: Mal ganz "platt" gefragt... Antworten mit Zitat

... gibt es einen Weg mit dem man einen selbstdefinierten Speicherbereich mit anderen Programmen teilen kann?



Gerade im Umgang mit DLLs wäre sowas sehr... angenehm lächeln ... alles mögliche per Value zu übergeben find ich irgendwie nervig (auch wenn es wahrscheinlich die "hohe Kunst" ist).
Aber vor allem könnte ich mir dir Kommunikation zwischen zwei parallel-laufenden Programmen so viel effektiver vorstellen.

Bei FB ists ja so das man einen 4byte großen Adressraum zur Verfügung hat und im Prinzip nicht "ausbrechen" kann. (ich hoffe ich hab mich jetzt nicht zu unglücklich ausgedrückt.)

Dennoch gibt es anscheinend Programme die auf den Speicherinhalt anderer Programme zugriff nehmen können!!
Diverse Hack-Tools beobachten den Speicherbereich eines beliebigen Programmes und können ihn sogar aktiv verändern.
Nun möchte ich ja gar nichts hacken sondern 2 programme von sich aus so auslegen das sie sich über einen gemeinsamen speicherbereich miteinander unterhalten können und dürfen!!

Danke schon mal für die Mühe bis hier hin lächeln

Gruß Chris
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 27.08.2008, 15:32    Titel: Re: Mal ganz "platt" gefragt... Antworten mit Zitat

OneCypher hat Folgendes geschrieben:
... gibt es einen Weg mit dem man einen selbstdefinierten Speicherbereich mit anderen Programmen teilen kann?

Ja das gibt es und nennt sich Shared Memory unter UNIX/Linux und stellt ein Teilkonzept von der sog. System V IPC dar.

Wichtig: Um Shared Memory sinnvoll nutzen zu können, musst Du Dich auch mit Grundkonzepte wie Semaphoren und Mutex sowie generell kritischen Abschnitten (critical section) auseinandersetzen.

Generell ist Parallelprogrammierung relativ anspruchsvoll und stellte daher während meines Informatikstudiums sogar ein eigenes Fach dar!
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 27.08.2008, 15:34    Titel: Antworten mit Zitat

Gut, unter Linux hat dreael es gerade erklärt. Unter DOS--- Wie willst Du unter DOS zwei Programme parallel laufen lassen?

Höchstens geht das unter Multitasking-Umgebungen. Unter Windows kannst Du natürlich Nachrichten zwischen zwei Prozessen verschicken und darin Werte oder Pointer auf die jeweiligen Speicherbereiche übergeben.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 27.08.2008, 15:44    Titel: Antworten mit Zitat

(Ich wollte mal gesagt haben, dass ein Programm und dessen Module sich unter Windows einen Speicherbereich teilen.)
Deswegen kann man ganz einfach und schnell in einem Modul (DLL bspw.) einen Speicherbereich allozieren, und das Hauptprogramm kann es bearbeiten und sogar dealloziieren...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 27.08.2008, 16:23    Titel: Antworten mit Zitat

@Elektronix: Unter DOS kann man immerhin ein weiteres Programm aus dem Hauptprogramm herraus starten. Dann wartet das Hauptprogramm bis das 2. programm beendet ist.
Wäre auch nicht schlecht wenn das 2. Programm dann auf den Speicher des Hauptprogrammes zugreifen könnte...

@dreal: hmm.. Mutex ?.. hört sich nach multithreading an lächeln .. innerhalb von FB hab ich mich damit sogar schon beschäftig.. also mit der Synchronisation von mehreren Threads die auf gemeinsamen speicher zugreifen.

Ich arbeite die Meiste zeit unter Linux, bin aber auch oft in der Windows-Welt. Sind alle Vorgehen was "Gemeinsamen-Speicher" angeht immer OS-Spezifisch?


@28398: Unter Windows hab ich zu Anfangs mal versucht einen Pointer an eine Funktion innerhalb einer DLL zu übergeben. Windows dankte mir das mit dem Absturz des Programmes happy Daher dachte ich das Windows das genauso abschottet.



Wie funktioniert es generell die Speicherinhalte anderer Programme zu überwache bzw auszulesen? .. Hoffe doch das dies kein "illegales" Thema ist!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 27.08.2008, 16:45    Titel: Antworten mit Zitat

PS: Was ich schon immer mal loswerden wollte:

Was Microsoft lang nennt, nennt Freebasic Integer *lol*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 27.08.2008, 16:55    Titel: Antworten mit Zitat

Zitat:
@Elektronix: Unter DOS kann man immerhin ein weiteres Programm aus dem Hauptprogramm herraus starten. Dann wartet das Hauptprogramm bis das 2. programm beendet ist.
Wäre auch nicht schlecht wenn das 2. Programm dann auf den Speicher des Hauptprogrammes zugreifen könnte...
Ist aber eine ziemlich gefährliche Sache. Wenn nämlich dieses 2. Programm die Daten des Hauptprogrammes ändert, kommt das Hauptprogramm evtl zu falschen Ergebnissen oder stürzt sogar ganz ab.

Zitat:
Sind alle Vorgehen was "Gemeinsamen-Speicher" angeht immer OS-Spezifisch?
Soweit ich weiß ja, weil jedes OS seinen Speicher anders abschottet.

Zitat:

Was Microsoft lang nennt, nennt Freebasic Integer *lol*

Die Datenbezeichnungen hat sich unter Windows mehrfach geändert. Früher war ein Integer unter Windows 16Bit breit, seit Win98 sind es 32Bit. Dementsprechend haben sich auch die anderen Datenbreiten verschoben. Ein Long unter WinXP ist glaube ich 64Bit.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 27.08.2008, 17:04    Titel: Antworten mit Zitat

Hmm.. wenn ich mich recht erinnere sind auch unter WinXP Pointer genauso groß/lang wie LONG-Variablen. Zumindest werden in den Dokumentationen die ich habe Adressen immer mit LONG-Variablen an die WinAPI übergeben. Und somit wären LONG-Variablen unter WinXP immer noch 32-bittig... vielleicht kommts ja auf den Compiler an...

Aber 64-Bit Pointer gibts definitiv erst ab WinXP 64 zwinkern


Also wenn ich ein 2. Programm aus meinem Hauptprogramm unter DOS aufrufe, dann wird es definitiv kein Programm sein welches mit Absicht das Hauptprogramm durcheinander bringt ..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 27.08.2008, 19:55    Titel: Antworten mit Zitat

Hi,
unter Windows gibt es noch die Möglichkeit des FileMapping (http://www.freebasic-portal.de/index.php?s=code&id=125), ist eigentlich nichts anderes als Daten statt über die HD über den Speicher auszutauschen.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 27.08.2008, 20:32    Titel: Antworten mit Zitat

OneCypher hat Folgendes geschrieben:
Ich arbeite die Meiste zeit unter Linux, bin aber auch oft in der Windows-Welt. Sind alle Vorgehen was "Gemeinsamen-Speicher" angeht immer OS-Spezifisch?

Meines Wissens sind mittlerweilen etliche dieser aus der UNIX-Welt entstandene Konzepte zu sog. POSIX-Standards geworden, an denen sich mittlerweilen viele Betriebssysteme daran halten.

Wie der Wikipedia-Artikel zeigt, ist Windows vom POSIX-Standard noch einiges entfernt, wobei NT-basierte Versionen (NT 4.0, W2K, XP/Server 2003 und Vista/Server 2008) gegenüber 95/98/ME wesentlich besser dastehen. Allerdings stellt Microsoft mit Services for UNIX eine entsprechende Erweiterung bereit. Eine Alternative unter Windows ist Cygwin, welches den Microsoft-Betriebssystemen auch sehr viele UNIX/Linux-Funktionalität beibringt, womit viele Open Source-Projekte auch unter Windows erfolgreich zum Laufen gebracht werden können.

Ebenfalls noch lesenswert an dieser Stelle:

http://de.wikipedia.org/wiki/Linux_Standard_Base
http://de.wikipedia.org/wiki/Unixoid
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 27.08.2008, 21:37    Titel: Antworten mit Zitat

Ansonsten gibts ja noch Extern.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 28.08.2008, 13:21    Titel: Antworten mit Zitat

Zitat:
... womit viele Open Source-Projekte auch unter Windows erfolgreich zum Laufen gebracht werden können.


OpenSource-Projekte sollten nur aus einem einzigen Grund noch auf Windows portiert werden: Damit zukünftige Linux-Benutzer ihre geliebten Programme mit Namen kennen!

... Ist jedenfalls mal meine Meinung. Desto mehr OSS ich unter Windows einsetze desto leichter fällt der umstieg auf linux.. wer will schon closed-source...

*räusper* .. sorry fürs offtopic...


@28398: Lustig .. dein Nick hat genau die quersumme 30 .. *räusper*
Hm.. Extern ... aus dem Beispiel in der Befehlsreferenz werd ich nich so richtig schlau..

Wieso ruft dort das 2. Modul eine Funktion des 1. Modules auf? .. Bzw wie erkennt das 2. Modul das die Sub "SetFoo" im 1. Modul steht? Irgendwie verwirrend weil dort auch nirgends steht wie das zu compilieren und aufzurufen ist..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz