[GCC + Linux] anderes Programm (AVR-Dude) in C aufrufen.

Persönliche Seite #2047367
Lesenswert?

()(()))()((() schrieb:
>> Unter Windows gibt es z.b. die Win32-API-Funktion CreateProcess.
>
> Guck dir mal die Parameter davon an, das tue ich mir nicht an wenn nicht
> unbedingt nötig.

Die Parameter muss man nicht unbedingt alle nutzen, aber man hat auch 
mehr Freiheitsgrade als bei "system", so kann man das Arbeitsverzeichnis 
frei angeben, was in manchen Situationen nicht unwichtig ist.
Auch kann man ein Handle auf den erzeugten Prozess erhalten, mit dem man 
beispielsweise feststellen kann, wann er sich beendet hat.
Gast #2047752
Lesenswert?

STOP!

fork hat noch nicht einmal ansatzweise die erwünschte Funktionalität.

pid_t fork(void);

Description
fork() creates a child process that differs from the parent process only 
in its PID and PPID, and in the fact that resource utilizations are set 
to 0. File locks and pending signals are not inherited.

Was der TO ist ein einfaches
int system(const char *command);

Description
system() executes a command specified in command by calling /bin/sh -c 
command, and returns after the command has been completed. During 
execution of the command, SIGCHLD will be blocked, and SIGINT and 
SIGQUIT will be ignored.
Gast #2048593
Lesenswert?

()(()))()((() schrieb:
> Rufus Τ. Firefly schrieb:
>> Unter Windows gibt es z.b. die Win32-API-Funktion CreateProcess.
>
> Guck dir mal die Parameter davon an, das tue ich mir nicht an wenn nicht
> unbedingt nötig. Für "dir", "mkdir" und Co. ist system() völlig
> ausreichend.

Man muß sich halt über die potenziellen Sicherheitsprobleme bewußt sein, 
sofern die für das gewünschte Programm eine Rolle spielen.

Norbert schrieb:
> STOP!
>
> fork hat noch nicht einmal ansatzweise die erwünschte Funktionalität.

Deshalb stand da ja auch nicht "fork()" sondern "fork() und exec()". 
Beides zusammen hat sehr wohl die erwünschte Funktionalität.
Gast #2048623
Lesenswert?

Aha...

und ich dachte der TO wollte:

>> gibt es eine Möglichkeit ein Programm welches
>> auf meinem Rechner installiert in C zu "callen"?
>> so in der art:
>> Kommandozeile("mkdir xyz.lol");

also so etwas wie:

  system("mkdir xyz.lol");

nämlich einen Aufruf eines externen Programms und nach Beendigung soll 
sein Programm weiterlaufen. Da hab' ich ihn bestimmt völlig falsch 
verstanden...




In Wirklichkeit möchte er sein Programm also forken, sich mit PID und 
PPID herumschlagen, im geforkten Teil mit exec(l/lp/le/v/vp) das externe 
Programm aufrufen, die PID auf Beendigung prüfen und diese Info an sein 
Hauptteil übermitteln um dort mit der Programmausführung weiterzumachen.

Geht natürlich auch!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren