Zuerst können Sie fork()
verwenden, um einen untergeordneten Prozess zu erstellen. Im untergeordneten Prozess können Sie exec()
aufrufen, um den Befehl auszuführen, den Sie möchten.
Es gibt ein einfaches Beispiel:
#! / usr / bin / env bash
ls -l
************* test.c ****************
%Vor% Das ist eine sehr interessante Frage. Mein Verständnis von MISRA C ist, dass es Richtlinien für die Verwendung der C-Sprache in kritischen Systemen bietet. Aber die C-Sprachen-Standardbibliothek, die die system
-Funktion enthält, ist nur ein kleiner Teil der Summe des Bibliothekscodes, der typischerweise in modernen Anwendungen verwendet wird - oft sogar in eingebetteten Systemen.
Ich habe noch nie eine Anwendung für MISRA-Standards entwickelt und konnte nur eine etwas ältere Version (ab 2004) der MISRA-Richtlinien finden. Soweit ich das beurteilen kann, schweigt MISRA über die Verwendung von POSIX-Bibliotheksfunktionen, die Sie normalerweise auf jedem Linux-basierten System zur Verfügung haben. Wenn MISRA wirklich nichts über POSIX-Bibliotheksfunktionen sagt, sollten alle Funktionen in der POSIX-Bibliothek uneingeschränkt funktionieren. Dazu gehören fork
, exec
und popen
, die alle von POSIX und nicht vom C-Standard definiert werden. Von den drei ist popen
wahrscheinlich am ähnlichsten in Funktionalität / Schnittstelle zur C system
-Funktion.
Sie möchten sich vielleicht fragen, warum MISRA C die Verwendung der Funktion system
einschränkt und ob für die Verwendung der obigen drei Funktionen dasselbe gilt.