Discussion:
Da hilft mir mein Buch auch nicht weiter
(zu alt für eine Antwort)
Peter Thoms
2016-09-02 12:19:29 UTC
Permalink
Raw Message
Hallo,

am Beispiel von einem vorgegebenen Programm möchte den gedachten Lauf
nachvollziehen. Es läuft incl. main() nur auf einer übersichtlichen
Anzahl von sechs Funktionen.

Aber leider steht eine ganze Hand voll aus dem Code
http://panteltje.com/panteltje/pic/mag_pic/log_mag_pic_vectors-0.3.c
(Übersicht: http://panteltje.com/panteltje/pic/mag_pic/)

nicht in meinem C-Buch (ISBN 978-3-938626-22-1, C-Programmierung unter
Linux, Unix und Windows)

So Sachen wie
#include tremios.h
#include sys/file.h
#include getopt.h
...
struct termios tty
speed_t baud
tcgetattr(fd; &tty)
tcsetattr()
cfsetospeed()
cfsetispeed()
...
tty.c.cflag
tty.c.iflag
tty.c.oflag
...
strsave()
getopt()
select()
FD_ZERO()
FD_SET()
...
timeout.tv_sec
...

Frage:
Wie könnte ich all den Kram für mich die Reihe heben?
Egal wo ich im Internett schaue um den Inhalt vom Buch zu ergänzen, den
Überblick schaffe ich nicht so recht durch die Stoppelei.


gruß
peter
Helmut Schellong
2016-09-02 14:58:51 UTC
Permalink
Raw Message
On 09/02/16 14:19, Peter Thoms wrote:
[...]
Post by Peter Thoms
Wie könnte ich all den Kram für mich die Reihe heben?
Egal wo ich im Internett schaue um den Inhalt vom Buch zu ergänzen, den
Überblick schaffe ich nicht so recht durch die Stoppelei.
Ein erster Schritt ist, unter Unix einzugeben:

man funktionsname
--
Mit freundlichen Grüßen
Helmut Schellong ***@schellong.biz
www.schellong.de www.schellong.com www.schellong.biz
http://www.schellong.de/c.htm
Hermann Riemann
2016-09-02 17:37:53 UTC
Permalink
Raw Message
Post by Peter Thoms
tremios.h
Sowas gebe ich dann in google als Suchbegriff ein
und schaue dann weiter.

Hermann
der bedauert, dass so Kapitel wie Terminal und SDL
in der neuen Auflage von Linux-Unix-Programmierung
nicht mehr enthalten ist.
--
www.hermann-riemann.de
Helmut Schellong
2016-09-02 17:50:00 UTC
Permalink
Raw Message
Post by Hermann Riemann
Post by Peter Thoms
tremios.h
Sowas gebe ich dann in google als Suchbegriff ein
und schaue dann weiter.
Ich gebe ein:

man termios
--
Mit freundlichen Grüßen
Helmut Schellong ***@schellong.biz
www.schellong.de www.schellong.com www.schellong.biz
http://www.schellong.de/c.htm
Stefan Reuther
2016-09-02 20:48:28 UTC
Permalink
Raw Message
Post by Peter Thoms
am Beispiel von einem vorgegebenen Programm möchte den gedachten Lauf
nachvollziehen. Es läuft incl. main() nur auf einer übersichtlichen
Anzahl von sechs Funktionen.
Aber leider steht eine ganze Hand voll aus dem Code
http://panteltje.com/panteltje/pic/mag_pic/log_mag_pic_vectors-0.3.c
(Übersicht: http://panteltje.com/panteltje/pic/mag_pic/)
nicht in meinem C-Buch (ISBN 978-3-938626-22-1, C-Programmierung unter
Linux, Unix und Windows)
So Sachen wie
#include tremios.h
#include sys/file.h
#include getopt.h
...
struct termios tty
speed_t baud
Den Tip mit 'man' hast du schon bekommen. Dem sei noch hinzuzufügen:
FreeBSD hat einen vorzüglichen Online-Manpage-Browser, falls der dir
angenehmer zu bedienen ist: <https://www.freebsd.org/cgi/man.cgi>
Es können auch Manpages anderer Betriebssysteme als FreeBSD ausgewählt
werden.

Grundsätzlich scheint es dir um die Programmierung einer seriellen
Schnittstelle zu gehen, folglich solltest du dich nach einem Dokument
über dieses Thema umsehen. Einen (sehr oberflächlichen) Überblick gibt
<http://tldp.org/HOWTO/Serial-Programming-HOWTO/>. Wirf einfach mal ein
paar passende Stichworte "linux serial programming" o.ä. in den
Suchdienst deines geringsten Misstrauens. Das hier
<http://xanthium.in/Serial-Port-Programming-on-Linux> scheint auf den
nullten Blick noch ganz schick; für mehr reicht mein Enthusiasmus heute
nicht mehr.


Stefan
Peter Thoms
2016-09-03 19:20:57 UTC
Permalink
Raw Message
Post by Stefan Reuther
Post by Peter Thoms
am Beispiel von einem vorgegebenen Programm möchte den gedachten Lauf
nachvollziehen. Es läuft incl. main() nur auf einer übersichtlichen
Anzahl von sechs Funktionen.
Aber leider steht eine ganze Hand voll aus dem Code
http://panteltje.com/panteltje/pic/mag_pic/log_mag_pic_vectors-0.3.c
(Übersicht: http://panteltje.com/panteltje/pic/mag_pic/)
nicht in meinem C-Buch (ISBN 978-3-938626-22-1, C-Programmierung unter
Linux, Unix und Windows)
So Sachen wie
#include tremios.h
#include sys/file.h
#include getopt.h
...
struct termios tty
speed_t baud
FreeBSD hat einen vorzüglichen Online-Manpage-Browser, falls der dir
angenehmer zu bedienen ist: <https://www.freebsd.org/cgi/man.cgi>
Es können auch Manpages anderer Betriebssysteme als FreeBSD ausgewählt
werden.
Grundsätzlich scheint es dir um die Programmierung einer seriellen
Schnittstelle zu gehen, folglich solltest du dich nach einem Dokument
über dieses Thema umsehen. Einen (sehr oberflächlichen) Überblick gibt
<http://tldp.org/HOWTO/Serial-Programming-HOWTO/>. Wirf einfach mal ein
paar passende Stichworte "linux serial programming" o.ä. in den
Suchdienst deines geringsten Misstrauens. Das hier
<http://xanthium.in/Serial-Port-Programming-on-Linux> scheint auf den
nullten Blick noch ganz schick; für mehr reicht mein Enthusiasmus heute
nicht mehr.
Hallo,

vielen Dank erst mal!

Ist termios kein C, sondern eine shell-funktion?
Wenn ich eine .exe erstellen möchte, läuft die damit wahrscheinlich
nicht, oder (nur mal so angedacht)?


Peter
Peter Thoms
2016-09-03 21:45:12 UTC
Permalink
Raw Message
Post by Peter Thoms
Hallo,
vielen Dank erst mal!
Ist termios kein C, sondern eine shell-funktion?
Wenn ich eine .exe erstellen möchte, läuft die damit wahrscheinlich
nicht, oder (nur mal so angedacht)?
Hallo,

ok, das hört ja gar nicht auf.
Irgendwie hat posix was mit ansi c zu tun
https://en.wikipedia.org/wiki/C_POSIX_library
https://en.wikipedia.org/wiki/ANSI_C
usw usw

Danke nochmal
peter
Michael Bäuerle
2016-09-04 08:50:00 UTC
Permalink
Raw Message
Post by Peter Thoms
Post by Peter Thoms
Ist termios kein C, sondern eine shell-funktion?
Es ist keine Shell-Funktion, sondern ein (C basiertes) API von POSIX,
s.u.
Post by Peter Thoms
Post by Peter Thoms
Wenn ich eine .exe erstellen möchte, läuft die damit wahrscheinlich
nicht, oder (nur mal so angedacht)?
Windows hat AFAIK per Default kein POSIX API. Mit z.B. Cygwin kann man
aber eines installieren. Damit sollte termios prinzipiell auch dort
nutzbar sein.
Post by Peter Thoms
[...]
Irgendwie hat posix was mit ansi c zu tun
https://en.wikipedia.org/wiki/C_POSIX_library
https://en.wikipedia.org/wiki/ANSI_C
usw usw
Erstmal zu POSIX allgemein:
<http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap01.html>

POSIX basiert auf C, heutzutage auf ISO C:
<http://pubs.opengroup.org/onlinepubs/9699919799/utilities/c99.html>

termios ist wiederum ein Teil von POSIX (das Terminal API, das auch
zur Steuerung serielle Schnittstellen zu anderer Hardware nützlich ist).
<http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/termios.h.html>
G.B.
2016-09-04 10:28:34 UTC
Permalink
Raw Message
Post by Michael Bäuerle
POSIX basiert auf C
Das ist ein historisch bedingtes und begründetes Vorurteil.

"POSIX" für "Portable Operating System Interface"

Mit Blick auf die Programmierung dreht sich das zunächst um
normierten Zugriff auf (etwas abstrakt beschriebene)
System-Bestandteile von POSIX-zertifizierten UNIX™-artigen
Betriebssystemen (Prozesse, I/O-Luken, Fließkomma-Fehlausführung,
Zeitgeber, Semaphore, threads, ...)
C war die "Haussprache" des ursprünglichen UNIX und ist heute
noch wesentlich für die Entwicklung des Systemkerns von z.B. GNU/Linux,
von Gerätetreibern, der übernommenen utilities u.a.m..

Freilich bieten IBM, Microsoft und andere für ihre POSIX-zertifizierten
Betriebssysteme (bzw. Zusätze) auch compiler für Fortran, C++, Swift
oder PL/1 an. Diese erlauben Zugriff auf POSIX-Einrichtungen in
der entsprechenden Programmiersprache, und sie teilen dabei
die Aufrufkonventionen für Funktionen und den Zugriff auf Datenstrukturen
mit denen eines jeweiligen C-compilers. Bspw. ist der Kern von
Windows™ um einiges anders, als der von GNU/Linux oder AIX; trotzdem
wird man mit verschiedenen Sprachen auf diesen Systemen sowohl POSIX-
Bestandteile erzeugen als auch diese in eigenen Programmen nutzen können.

Die deutsch- und englischsprachingen Einträge in der Wikipedia
sind inhaltlich nicht gleich, deswegen lohnt sich ein Blick
in beide:

https://en.wikipedia.org/wiki/POSIX
https://de.wikipedia.org/wiki/POSIX
--
"HOTDOGS ARE NOT BOOKMARKS"
Springfield Elementary teaching staff
Michael Bäuerle
2016-09-04 10:53:34 UTC
Permalink
Raw Message
Post by G.B.
Post by Michael Bäuerle
POSIX basiert auf C
Das ist ein historisch bedingtes und begründetes Vorurteil.
"POSIX" für "Portable Operating System Interface"
Mit Blick auf die Programmierung dreht sich das zunächst um
normierten Zugriff auf (etwas abstrakt beschriebene)
System-Bestandteile von POSIX-zertifizierten UNIX™-artigen
Betriebssystemen (Prozesse, I/O-Luken, Fließkomma-Fehlausführung,
Zeitgeber, Semaphore, threads, ...)
C war die "Haussprache" des ursprünglichen UNIX und ist heute
noch wesentlich für die Entwicklung des Systemkerns von z.B. GNU/Linux,
von Gerätetreibern, der übernommenen utilities u.a.m..
Freilich bieten IBM, Microsoft und andere für ihre POSIX-zertifizierten
Betriebssysteme (bzw. Zusätze) auch compiler für Fortran, C++, Swift
oder PL/1 an.
Ja, zusätzlich zu C.
Post by G.B.
Diese erlauben Zugriff auf POSIX-Einrichtungen in
der entsprechenden Programmiersprache, und sie teilen dabei
die Aufrufkonventionen für Funktionen und den Zugriff auf Datenstrukturen
mit denen eines jeweiligen C-compilers. Bspw. ist der Kern von
Windows™ um einiges anders, als der von GNU/Linux oder AIX; trotzdem
wird man mit verschiedenen Sprachen auf diesen Systemen sowohl POSIX-
Bestandteile erzeugen als auch diese in eigenen Programmen nutzen können.
Definiert ist das POSIX API aber in C. Also darf man doch behaupten,
dass es auf C basiert. Dass für andere Sprachen Bindings existieren
ändert daran doch nichts.
Post by G.B.
Die deutsch- und englischsprachingen Einträge in der Wikipedia
sind inhaltlich nicht gleich, deswegen lohnt sich ein Blick
https://en.wikipedia.org/wiki/POSIX
https://de.wikipedia.org/wiki/POSIX
Dort wird aber diese Frage nicht beantwortet, im Gegenteil steht dort:
|
| System-Schnittstelle
|
| Die C-Systemaufrufe und dazugehörige Header-Dateien.
Helmut Schellong
2016-09-04 17:26:07 UTC
Permalink
Raw Message
Post by Michael Bäuerle
Definiert ist das POSIX API aber in C. Also darf man doch behaupten,
dass es auf C basiert. Dass für andere Sprachen Bindings existieren
ändert daran doch nichts.
Ich hingegen habe gelernt, daß C ein Teil von POSIX ist.
Formulierungen können sehr unklar sein und falsches Denken hervorrufen.
Wenn etwas von POSIX durch C definiert ist, dann basiert POSIX nicht
deshalb auf C, sondern C ist ein Vehikel, um etwas zu erklären.
--
Mit freundlichen Grüßen
Helmut Schellong ***@schellong.biz
www.schellong.de www.schellong.com www.schellong.biz
http://www.schellong.de/c.htm
Michael Bäuerle
2016-09-04 18:04:28 UTC
Permalink
Raw Message
Post by Helmut Schellong
Post by Michael Bäuerle
Definiert ist das POSIX API aber in C. Also darf man doch behaupten,
dass es auf C basiert. Dass für andere Sprachen Bindings existieren
ändert daran doch nichts.
Ich hingegen habe gelernt, daß C ein Teil von POSIX ist.
Das widerspricht meiner Aussage doch nicht.
Und der Compiler selbst ist optional (ich hatte den Link ja zitiert,
man beachte die "CD" Markierung).
Post by Helmut Schellong
Formulierungen können sehr unklar sein und falsches Denken hervorrufen.
Was genau ist denn unklar?
Post by Helmut Schellong
Wenn etwas von POSIX durch C definiert ist, dann basiert POSIX nicht
deshalb auf C, sondern C ist ein Vehikel, um etwas zu erklären.
C dient doch hier aber nicht nur zur Erklärung.
Wie soll man das POSIX API ohne C implementieren?
G.B.
2016-09-05 00:37:50 UTC
Permalink
Raw Message
Post by Michael Bäuerle
Wie soll man das POSIX API ohne C implementieren?
Vermutlich sind alle Sprachen geeignet, die den Umfang
von C ausdrücken können, sogar soweit dieser Umfang
für Aufrufe des POSIX API überhaupt benötigt wird.

(Ich kann mich schwach an POSIX-Fähigkeiten von OS/2
erinnern. Vieles in diesem System ist in Assembler
geschrieben.)
--
"HOTDOGS ARE NOT BOOKMARKS"
Springfield Elementary teaching staff
Rainer Weikusat
2016-09-05 12:39:08 UTC
Permalink
Raw Message
Post by G.B.
Post by Michael Bäuerle
Wie soll man das POSIX API ohne C implementieren?
Vermutlich sind alle Sprachen geeignet, die den Umfang
von C ausdrücken können, sogar soweit dieser Umfang
für Aufrufe des POSIX API überhaupt benötigt wird.
Nicht alle Programmiersprachen unterstuetzen variadische Unterprogramme.
Michael Bäuerle
2016-09-07 19:26:30 UTC
Permalink
Raw Message
Post by G.B.
Post by Michael Bäuerle
Wie soll man das POSIX API ohne C implementieren?
Vermutlich sind alle Sprachen geeignet, die den Umfang
von C ausdrücken können, sogar soweit dieser Umfang
für Aufrufe des POSIX API überhaupt benötigt wird.
(Ich kann mich schwach an POSIX-Fähigkeiten von OS/2
erinnern. Vieles in diesem System ist in Assembler
geschrieben.)
Ich meinte nicht die Sprache, in der der Kernel implementiert
ist, sondern die des API im Userspace.
G.B.
2016-09-07 20:16:10 UTC
Permalink
Raw Message
Post by Michael Bäuerle
Post by G.B.
Post by Michael Bäuerle
Wie soll man das POSIX API ohne C implementieren?
Vermutlich sind alle Sprachen geeignet, die den Umfang
von C ausdrücken können, sogar soweit dieser Umfang
für Aufrufe des POSIX API überhaupt benötigt wird.
(Ich kann mich schwach an POSIX-Fähigkeiten von OS/2
erinnern. Vieles in diesem System ist in Assembler
geschrieben.)
Ich meinte nicht die Sprache, in der der Kernel implementiert
ist, sondern die des API im Userspace.
Das hatte ich verstanden.
--
"HOTDOGS ARE NOT BOOKMARKS"
Springfield Elementary teaching staff
Florian Weimer
2016-09-05 05:45:51 UTC
Permalink
Raw Message
Post by Michael Bäuerle
Wie soll man das POSIX API ohne C implementieren?
Es gibt eine Ada-Variante (POSIX 1003.5).
Michael Bäuerle
2016-09-07 19:36:01 UTC
Permalink
Raw Message
Post by Florian Weimer
Post by Michael Bäuerle
Wie soll man das POSIX API ohne C implementieren?
Es gibt eine Ada-Variante (POSIX 1003.5).
Ja, Fortran (1003.9) gab es auch noch. Ist aber alles von Anfang der
90er Jahre ... gibt es da tatsächlich aktuelle Versionen davon, die
vollständige - POSIX.1-2008 entsprechende - Funktionalität bieten?
Florian Weimer
2016-09-11 16:14:53 UTC
Permalink
Raw Message
Post by Michael Bäuerle
Post by Florian Weimer
Post by Michael Bäuerle
Wie soll man das POSIX API ohne C implementieren?
Es gibt eine Ada-Variante (POSIX 1003.5).
Ja, Fortran (1003.9) gab es auch noch. Ist aber alles von Anfang der
90er Jahre ... gibt es da tatsächlich aktuelle Versionen davon, die
vollständige - POSIX.1-2008 entsprechende - Funktionalität bieten?
Ich weiß nicht, ob POSIX 1003.5 überhaupt Teil von POSIX.1-2008 ist.
Die Ada-Teile wurden nie offiziell ins Web gestellt und waren vor ein
paar Jahren auch nicht per Fernleihe übers deutsche Bibliothekssystem
zu bekommen.

FLORIST ist vermutlich noch gewartet.

Loading...