CreateProcess (WinAPI) in Linux
-
Hi,
ich brüchte eine Funktion mit der man recht einfach eine .exe starten kann und dazu noch die ProzessID bekommt.
In der WinAPI würde ich CreateProcess verwenden. Im Rückgabewert hier bereits unter anderem die PID drinn.
Gibt es so was einfaches auch in Linux?
Ich starte hier nämlich mehrere EXEn (?) und möchte jede dann irgendwann schließen (und zwar eindeutig, nicht irgendeine von den geöffneten)MfG Krauzi
-
In Linux erstellt man keine neuen Prozesse, sondern man klont den eigenen Prozess.
D.h. du rufst fork() auf und dann wird aus deinem Prozess ein neuer Prozess + dein alter Prozess und dann kannst du im neuen Prozess einer der exec() SystemCalls aufrufen, dadurch ersetzt du das Programm in dem Prozess durch ein anderes.Einfach mal kurz nach fork und exec system call googeln, dann findest du auch Beispiele dazu, keine Angst ist nicht so schwer
-
pid_t pid = vfork(); if(pid == 0) { // child process execl("foo", "foo", 0); perror("execl"); _exit(1); } else if(pid < 0) { // fehler perror("vfork"); } else { // parent process // pid enthält die pid des child process }
s. man: vfork, man: execl und jedes Buch/Tutorial zum Thema Linux/Unix Programmierung
-
Hallo alle,
Ich habe mal eine Frage bezüglich Processe und Applikationen.
Ich will eine Aufgabe erfühlen, Touch auswerten, Display steuern, andere messmittel abfragen und auf dem Display darstellen.
Ich hatte mal vorher mehrere Processe von einen Process gestartet, mittel das kommando "system ("./task_5 &")", und alle Processe haben dann über Mailboxen miteinander kommuniziert.
Problem dabei ist, wenn ich Änderungen in einen Task vornehme, soll ich alle tasks neu kompilieren, und einzeln zum Target abschicken. wäre natürlich besser wenn ich die Ganze Applikation als eine Einzige ausführbare Datei kompilieren kann abe wie?
die Sache mit fork hilft mir leider nicht die ganze Applikation verständlich zu gestallten.
Hat vielleicht schon mal jemand so einen Ablauf gemacht? mehrere messmittel abzufragen und so eine Art echtzeit (Nahezu) zu realisieren?
vielen dank für eure Antworten.