[C/C++] Befehl ausführen

pc-world

Bekanntes Mitglied
Ich möchte mit C(++) in Linux einen Befehl wie "unzip abc.zip" ausführen. Dabei muss ich mehr oder weniger Live-Zugriff auf stdout/stderr haben, und die Möglichkeit haben, über einen anderen Thread den Befehl/ausgeführten Prozess zu terminieren.

popen scheidet wohl aus, da es u. a. fork benutzt, und fork so wie ich es verstanden habe auch alle anderen momentan laufenden Threads kopiert und es somit natürlich zu Fehlern kommen würde.

Hat jemand Ideen wie ich das umsetzen könnte?
 

energy47

Mitglied
warum soll das nicht gehen..
du kannst doch über die ID die fork zurückgibt steuern was welcher prozess macht..
erzeugst ein child prozess am anfang und die threads startest du im parent prozess...
Code:
pid_t = pid;
pid = fork();

if(pid == 0) {
   //child przess
   do unzip abz.zip
}
if(pid > 0) {
   //parent prozes
   do thread1
   do thread2
   ...
}

vielleicht hilft das als anregung.. ;)
 

pc-world

Bekanntes Mitglied

Ähnliche Java Themen


Oben