Linux, write \n ergibt \r\n

#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

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