mikrocontroller.net

Forum: PC-Programmierung File-descriptor


Autor: Katia (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich arbeite mit Linux- System, ist es möglich ein Bash-Script als File 
zu benutzen? open("file",O_RDONLY);
Über UART sende ich Kommandos als String-Format von dem Prozessor zum 
Mikrocontoller. Ich benutze das Bash-Script als Argument für das 
C-Programm im Prozessor. Jetzt möchte ich gerne das selbe Bash-Script 
als File-Descriptor benutzen.Dh das File öffnen und die Kommandos 
nacheinander durchzuführen.
Wie kann ich am besten sowas machen.

Ich danke euch.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Häh?

Du möchtest das Bash-Script als Textfile öffnen, und dir die einzelnen 
Bash-Code-Zeilen auslesen?

Oder

Du möchtest das Bash-Script starten, und die AUSGABE des Scriptes über 
einen Filedescriptor einlesen?

=> man fork; man execvp; man socketpair; man dup2; man waitpid

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, du kannst ein Shellscript als File öffnen, denn es ist ja nur
ein File.

Nein, davon wird es nicht abgearbeitet.  Diese Funktionalität ist
in den zugehörigen Interpreter codiert (/bin/bash in deinem Fall),
du musst also notwendiger Weise den Interpreter selbst dafür laufen
lassen.

Das geht zwar auch von einem C-Programm aus, aber eine Möglichkeit
für irgendwas wie eine zeilenweise Abarbeitung gibt's nicht.

Autor: Katia (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich möchte das Bash-Script starten, und die Ausgabe des Scriptes über
einen Filedescriptor einlesen und über UART weiter zum Mikrocontroller 
senden?
danke

Autor: yxcv (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hätte auf fscanf(STDOUT,"foo",&bar) getippt, aber 
http://www.dclc-faq.de/kap11.htm 11.13 sagt freopen. Siehe auch 
http://www.galileocomputing.de/openbook/c_von_a_bi....

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss dein C-Programm denn das Bash-Script mehrfach aufrufen können, oder 
würde es reichen wenn du das ganze einfach mit

bashscript.sh | c_program

startest, wobei das c_programm dann einfach die Zeilen von STDIN liest?

Ansonsten brauchst du den oben von mir angedeuteten Haufen mit 
socketpair, dup, fork&exec um das bash-program parallel laufen zu 
lassen, und dessen STDOUT mit einem Socket in deinem c-Programm zu 
verbinden.

Autor: Katia (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

in welchem Verzeichnis soll ich mein Script speichern? Beim öffnen 
bekomme ich immer -1.

danke

Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ich möchte das Bash-Script starten, und die Ausgabe des Scriptes über
>einen Filedescriptor einlesen und über UART weiter zum Mikrocontroller
>senden?

ehrlich gesagt, habe ich problem nachzuvollziehen was du genau 
möchtest^^

so wie es da steht, könnte man es auch so lösen
/directory/bash_script > datei

jetzt weisst du wo datei liegt und kannst mit x beliebigen
programm(C,cat,anderer script, etc..) sie öffnen.
aber irgendwie glaube ich du suchst was anderes ...

Autor: Sweet Home Alabama (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du die Ausgabe des Skriptes unbearbeitet über RS232 zum uC senden 
möchtest, ist dies hier vielleicht etwas für dich:

./script.sh > /dev/ttyS0

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.