AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal FreePascal [GNU/Linux] Prozess starten
Thema durchsuchen
Ansicht
Themen-Optionen

[GNU/Linux] Prozess starten

Ein Thema von implementation · begonnen am 29. Dez 2010 · letzter Beitrag vom 4. Jan 2011
Antwort Antwort
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#1

[GNU/Linux] Prozess starten

  Alt 29. Dez 2010, 14:53
Ich bin dabei, auf GNU/Linux mittels Free Pascal ein Programm zu schreiben.

Nun möchte ich hieraus ein anderes Programm aufrufen.

Unter Windows würde ich ShellExecute nutzen; für unixoide Systeme habe ich bisher nur die exec()-Funktionen gefunden,
die's in FreePascal bzw. der Unit "Unix" scheinbar nicht gibt.

Kann mir da jemand weiterhelfen?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: [GNU/Linux] Prozess starten

  Alt 29. Dez 2010, 14:58
fork

Nachtrag:
Execl Execute process (using argument list)

Execle Execute process (using argument list, environment)

Execlp Execute process (using argument list, environment; search path)

Execv Execute process

Execve Execute process using environment

Execvp Execute process, search path

Grüße
Klaus
Klaus

Geändert von Klaus01 (29. Dez 2010 um 15:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#3

AW: [GNU/Linux] Prozess starten

  Alt 29. Dez 2010, 15:02
Fork() erstellt eine Kopie des Elternprozesses.

Angenommen ich habe mein Programm 'wuppdi' und rufe darin fork() auf - dann wird 'wuppdi' erneut gestartet.
Ich möchte jedoch ein anderes Programm starten (nämlich 'fpc').

Daher hilft mir fork() leider nicht weiter.
Danke trotzdem!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: [GNU/Linux] Prozess starten

  Alt 29. Dez 2010, 15:06
dann gäbe es noch shell

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#5

AW: [GNU/Linux] Prozess starten

  Alt 29. Dez 2010, 15:20
Danke, das ist genau das, was ich suche!
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#6

AW: [GNU/Linux] Prozess starten

  Alt 29. Dez 2010, 18:18
Hi!

Vielleicht solltest du mal einen Blick auf die Klasse TProcess in der Unit process werfen. Diese erlaubt es dir Prozesse zu starten, Ein-/Ausgabe umzuleiten und den Exitcode eines Prozesses zu ermitteln.

Die Doku zu dem Thema findest du hier und im Free Pascal Wiki gibt es auch noch nen Artikel dazu.

Bzgl "fork":
In Unix sieht das Starten eines Prozesses normalerweise so aus:
Der Elternprozess ruft "fork" auf, welches einen Klon des Elterprozesses als Kind erzeugt. Der Kindprozess ruft nun "exec" auf, welches das Anwendungsabbild, welches vom Elternprozess geerbt wurde, durch das der neuen Anwendung ersetzt (TProcess macht unter Unix genau das, während es unter Windows CreateProcess verwendet).

Edit: " am Ende der URL vergessen...

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#7

AW: [GNU/Linux] Prozess starten

  Alt 29. Dez 2010, 18:46
zu TProcess: Ist mir hier etwas overpowert und umständlich, Shell bzw. FpSystem passt bei mir gerade einfach zu gut rein.

zu fork()/exec(): Interessant, sollte ich mir merken. Danke!
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#8

AW: [GNU/Linux] Prozess starten

  Alt 29. Dez 2010, 21:11
zu TProcess: Ist mir hier etwas overpowert und umständlich, Shell bzw. FpSystem passt bei mir gerade einfach zu gut rein.
Ich hätte dann noch ExecuteProcess im Angebot. Ist in der Unit SysUtils, Cross Platform und aufs nötigste reduziert.

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#9

AW: [GNU/Linux] Prozess starten

  Alt 4. Jan 2011, 00:56
Daher hilft mir fork() leider nicht weiter.
Doch! Unter unixoiden Systemen ist es generell fork -> exec!

fork() kopiert in der Tat den aktuellen Prozeß und exec() ersetzt das Image. Ich empfehle die einschlägige Literatur.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#10

AW: [GNU/Linux] Prozess starten

  Alt 4. Jan 2011, 10:10
Daher hilft mir fork() leider nicht weiter.
Doch! Unter unixoiden Systemen ist es generell fork -> exec!

fork() kopiert in der Tat den aktuellen Prozeß und exec() ersetzt das Image. Ich empfehle die einschlägige Literatur.
Hat mir JamesTKirk ja auch gerade erklärt.
Trotzdem danke!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz