fork/clone problem

A

-=Azrael=-

Gast
sers

also ich wollte ein programm schreiben
das einen anderes programm/skript aufruft

dazu wollte ich execl benutzen

danach wird aber das programm beendet

also wollte ich einen child prozess starten, dafür hab ichs clone verwendet da ich bei fork
keine argumente übergeben kann(oder doch??)

leider funktioniert das programm nicht weil es ein
_exit(0) benötigt und auch dann kommt noch die fehlermeldung

Segmentation fault

der sourcecode:

#include stdio.h
#include unistd.h
#include sched.h
#include string.h

int variable;


int do_something() {

//execl("/bin/ls","ls","-l",0);
variable = 42;
_exit(0);
}

int main(int argc, char *argv[]) {


void **child_stack;
char tempch;

variable = 9;
child_stack = (void **) malloc(16384);
printf("The variable was %d
", variable);

clone(do_something, &child_stack, CLONE_VM | CLONE_FILES, NULL);
sleep(1);

printf("The variable is now %d
", variable);
return 0;
}



ich verwende RedHat 7.3

könnte mir bitte jemand ein beistpielprogramm schreiben, bzw sagen wie ich es besser machen kann

ich währe auch für eine java version zu haben

mfg Azrael
 

mapiox

Tripel-As
Beiträge
176
wenn du nur ein externes Programm starten willst, ohne das dein Programm direkt beendet wird:


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>

int main()
{
puts ("/bin/ls ausführen");
system("/bin/ls -l");

puts ("/bin/ls wurde ausgeführt");

return 0;
}
 

Ähnliche Themen

Unix Webserver mit HTML Seite erstellen

Aufgabe in C

C HTTP request

dovecot und postfix Konfiguration Problem

windows schneller als linux stdlib ...

Oben