Linux, write \n ergibt \r\n

OP #3252719
Lesenswert?
• ▲
▼
Hallo, ich habe wieder ein Verständnisproblem in C.

Ich habe ein Array der Länge X.

Der Inhalt wird per write() an den UART ausgegeben.

Das letzte Zeichen dieses Arrays ist ein "\n", was laut 
http://de.wikipedia.org/wiki/Zeilenumbruch unter Linux einem 0x0A 
entsprechen sollte.

Allerdings statt der X Zeichen X+1 gesendet, welches zuerst ein 0x0D und 
dann ein 0x0A enthält. Woher kommt das 0x0D? In den manpages finde ich 
nichts, und eine Ersetzung sollte unter Linux ja auch nicht stattfinden?

Wer kann erklären, warum anscheinend doch eine Ersetzung stattfindet? Wo 
finde ich etwas handfestes?
Moderator Persönliche Seite #3252990
Lesenswert?
• ▲
▼
Georg A. schrieb:
> Potentiell doch, siehe termios (C) bzw. stty (Shell). Versuch mal stty
> -F /dev/ttyS0 -onlcr

Er sollte das besser in seinem C Programm als Initialisierung machen 
statt in der Shell.

Hier könnte man sich einfach die Funktion ttyraw() klauen, um sämtliche 
Unix-typische Zeichenverabeitung auf einem TTY abzuschalten:

  http://www.cs.uleth.ca/~holzmann/C/system/ttyraw.c

Wie Du schon sagtest: Das Manual zu termios(3) hilft, um ttyraw() zu 
verstehen.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.