dial(3N) dial(3N)
NAME
dial - Abgehende Terminalleitungsverbindung einrichten
SYNTAX
cc [option ...] datei ... -lnsl [bibliothek ...]
#include <dial.h>
int dial(CALL call);
void undial(int fd);
BESCHREIBUNG
dial liefert einen Dateideskriptor für eine Terminalleitung zurück,
die zum Lesen und Schreiben geöffnet ist. Das Argument von dial ist
eine CALL-Struktur (definiert in der Include-Datei dial.h).
Wenn das aufrufende Programm die Terminalleitung nicht mehr benötigt,
muß es undial aufrufen, um das Semaphor freizugeben, das während der
Einrichtung des Terminalgeräts gesetzt worden ist.
Die Definition von CALL in der Include-Datei dial.h sieht folgenderma-
ßen aus:
typedef struct {
struct termio *attr; /* Zeiger auf termio Attribut-struct */
int baud; /* Datenübertragungsrate */
int speed; /* 212A modem: niedrig=300, hoch=1200 */
char *line; /* Gerätename für hinausgehende Leitung */
char *telno; /* Zeiger auf tel-nummer Ziffernstring */
int modem; /* Spezifik. der Modemkontrolle f. Direktleitg. */
char *device; /* nicht verwendet */
int devlen; /* nicht verwendet */
} CALL;
Das CALL-Attribut speed ist nur für einen hinausgehenden gewählten
Ruf, das in diesem Falle entweder den Wert 300 oder 1200 besitzen
sollte, um auf ein 113A Modem oder auf die höhere oder niedere
Geschwindigkeit des 212A Modems hinzuweisen. Beachten Sie, daß das
113A Modem oder die Belegung der niederen Geschwindigkeit des 212A
Modems jede Rate zwischen 0 und 300 Bits pro Sekunde erlaubt. Die
Belegung der höheren Geschwindigkeit des 212A Modems überträgt und
empfängt jedoch nur mit einer Rate von 1200 Bits pro Sekunde. Das
CALL-Attribut baud ist für die gewünschte Übertragungsrate in der Ein-
heit Baud. Man könnte baud z. B. auf 110 und speed auf 300 (oder 1200)
setzen. Wenn speed jedoch auf 1200 gesetzt ist, muß baud auf die hohe
Geschwindigkeit (1200) gesetzt werden.
Falls die gewünschte Terminalleitung eine Direktleitung ist, sollte
der Zeiger auf ihren Gerätenamen in dem CALL-Attribut line stehen.
Gültige Werte für solche Terminal-Gerätenamen stehen in der Datei
Devices. In diesem Fall sollte der Wert von baud auf -1 gesetzt
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
dial(3N) dial(3N)
werden. Dieser Wert wird dial veranlassen, daß es den richtigen Wert
aus der Datei Devices ermittelt.
Das Attribut telno ist ein Zeiger auf eine Zeichenkette, die die zu
wählende Telefonnummer darstellt. Solche Nummern dürfen nur aus den
folgenden Zeichen bestehen:
0-9 wähle 0-9
* wähle *
# wähle #
= warte auf zweiten Wählton
- Verzögerung von ca. 4 Sekunden
Das CALL-Attribut modem wird dafür verwendet, Modemkontrolle für
Direktleitungen zu spezifizieren. Dieses Attribut sollte nicht Null
sein, wenn Modemkontrolle gefordert ist. Das CALL-Attribut attr ist
ein Zeiger auf eine termio-Struktur, wie sie in der Include-Datei
termio.h definiert ist. Für diesen Zeiger darf der Wert NULL an dial
übergeben werden. Wenn jedoch so eine Struktur verwendet wird, werden
die Attribute, die in ihr enthalten sind, für die herausgehende Termi-
nalleitung gesetzt, bevor die Verbindung eingerichtet wird. Dieses
Setzen ist häufig wichtig für bestimmte Attribute, wie z. B. die Pari-
tät und Baud-Rate.
Die CALL-Attribute device und devlen werden nicht mehr verwendet. Sie
bleiben aus Gründen der Kompatibilität in der CALL-Struktur.
DIAGNOSE
Beim Auftritt eines Fehlers wird ein negativer Wert zurückgegeben, der
den Grund des Fehlers angibt. Mnemotechnische Abkürzungen für diese
negativen Werte, wie sie hier aufgelistet werden, sind in der
Include-Datei dial.h definiert.
INTRPT -1 /* Unterbrechung aufgetreten */
DHUNG -2 /* Wähler hängt (keine Rückkehr vom Schreiben) */
NOANS -3 /* keine Antwort innerhalb von 10 Sekunden */
ILLBD -4 /* ungültige Baud-Rate */
APROB -5 /* acu Problem (open()-Fehler) */
LPROB -6 /* Leitungsproblem (open()-Fehler) */
NOLdv -7 /* kann Gerätedatei nicht öffnen */
DVNTA -8 /* angefordertes Gerät nicht verfügbar*/
DVNTK -9 /* angefordertes Gerät nicht bekannt */
NOBDA -10 /* kein Gerät für angeforderte Baud-Rate verfügbar */
NOBDK -11 /* kein Gerät für angeforderte Baud-Rate vorhanden */
DVNTE -12 /* angeforderte Geschw. nicht passend */
BADSYS -13 /* System ist nicht in Systemdatei */
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
dial(3N) dial(3N)
HINWEISE
Das Einbinden der Include-Datei dial.h hat ein automatisches Einbinden
der Include-Datei termio.h zur Folge.
Innerhalb des dial-Moduls wird ein alarm(2)-Systemaufruf mit 3600
Sekunden durchgeführt (und abgefangen), um die LCK..-Datei zu aktuali-
sieren und um das Geräte-Semaphor für das Terminalgerät einzurichten.
Andernfalls kann uucp(1) den LCK..-Eintrag in ihrem Aktualisierungs-
durchläufen, die alle 90 Minuten stattfinden, löschen. Der Alarm kann
ablaufen, während der Benutzer sich in einem read(2)- oder write(2)-
Systemaufruf befindet, was eine Fehlerrückgabe zur Folge hat. Falls
der Benutzer damit rechnet, eine Stunde oder mehr damit zu verbringen,
sollten Fehlerrückgaben von reads auf (errno==EINTR) überprüft und das
read möglicherweise nochmals durchgeführt werden.
DATEIEN
/etc/uucp/Devices
/etc/uucp/Systems
/var/spool/uucp/LCK..tty-Gerät
SIEHE AUCH
uucp(1), alarm(2), read(2), write(2), termio(7).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98