Ja, die Namen von so manchen Kernelfunktionen sind schon irreführend, so was ist mir auch schon oft passiert. Aber wenn man es sich genau überlegt kann es gar nicht sein. Denn die Funktion kann ja gar nicht wissen wie du die Queue schlafen legen willst, denn es gibt ja kein interruptible_poll_wait(...).
Na ja, wenn es jetzt funktioniert ist es ja gut.
Joe
Hallo zusammen ich hab da ein kleines Problem. Ich möchte ein Modem an der seriellen Schnittstelle auslesen und ankomende Zeichen z.b. nach einem RING durchsuchen. Leider bekomme ich wenn ich read() verwende nur immer Bruchstücke des Ankommenden Befehls. Ich habe einen Signalhandler eingerichtet das mir das Programm nur das serielle Schnittstelle abfragt wenn auch etwas vorhaden ist. Hier der Quellcode vielleicht hat ja jemand eine Idee.
# include <stdio.h>
# include <unistd.h>
# include <fcntl.h>
# include <string.h>
# include <signal.h>
# include <termios.h>
# define TERM_DEVICE "/dev/ttyS0" /* = COM1 */
# define TERM_SPEED B9600 /* Bit/Sek */
void signal_handler_IO (int status);
int start = 0;
int main()
{
int fd, zyklus = 0;
ssize_t length;
char buffer[16];
struct termios term_attr;
struct sigaction saio;
// Serielle Schnitstelle öffene
if ((fd = open(TERM_DEVICE, O_RDWR | O_NONBLOCK)) == -1)
{
perror("terminal: Can't open device " TERM_DEVICE);
return(1);
}
// Modem Parametrieren
// Alte Paramaeter von Modem einlesen
if (tcgetattr(fd, &term_attr) != 0)
{
perror("terminal: tcgetattr() failed");
return(1);
}
// Parameter ändern
term_attr.c_cflag = TERM_SPEED | CS8 | CRTSCTS | CLOCAL | CREAD;
term_attr.c_iflag = 0;
term_attr.c_oflag = OPOST | ONLCR;
term_attr.c_lflag = 0;
//Parameter auf Modem schreiben
if (tcsetattr(fd, TCSAFLUSH, &term_attr) != 0)
perror("terminal: tcsetattr() failed");
// Signal auf Modem setzen
saio.sa_handler = signal_handler_IO;
saio.sa_flags = 0;
saio.sa_restorer = NULL;
sigaction(SIGIO,&saio,NULL);
// Einrichten des asynchnonen E/A
fcntl(fd,F_SETOWN, getpid());
fcntl(fd,F_SETFL,FASYNC);
// Schleife starten
while (1)
{
// Modemabfrage starten
if(start == 1){
// Signal ignorieren
saio.sa_handler = SIG_IGN;
saio.sa_flags = 0;
saio.sa_restorer = NULL;
sigaction(SIGIO,&saio,NULL);
// Lesen vom Modem
if ((length = read(fd, buffer, 16)) == -1)
perror("terminal: read() failed");
else
write(STDOUT_FILENO, buffer, length);
// Bei Länge 0 zyklus addieren
if(length == 0){
zyklus +=1;
}
// Nach 10000 Zyklen wieder auf Signal warten
if(zyklus == 10000){
zyklus = 0;
start = 0;
// SIGNAL handler wieder starten
saio.sa_handler = signal_handler_IO;
saio.sa_flags = 0;
saio.sa_restorer = NULL;
sigaction(SIGIO,&saio,NULL);
}
}
}
printf("Aborted.\n");
close(fd);
return(0);
}
void signal_handler_IO (int status){
printf("received SIGIO signal.\n");
start = 1;
}
Danke
Gruss Marco
[ Dieser Beitrag wurde am 14.03.2003 um 01:34 Uhr von hugobossxx editiert. ]
Guten Morgen.
Ich habe mit yast unter Suse 7.1 php nachinstalliert.
lief auch alles ok. nur nachdem ich den Indianer neustartete, kam folgende Meldung, mit der ich nicht weiterkomme:
Starting httpd [ SuSEHelp PHP3 status ]
see /var/log/httpd/rcapache.log for details failed
und im logfile finde ich
[quote]Syntax error on line 200 of /etc/httpd/httpd.conf:
Cannot load /usr/lib/apache/libphp3.so into server: shared object not open
/quote]
die libphp3.so ist am richtigen platz, und hat "-rwxr-xr-x"
Hat jemand eine Idee ?
Danke Hanns
Hallo, habe auch einen Beitrag zu den derzeitigen Samba Problemen.
Mein Ziel ist ein simples Free-4-All share. Versuche ich per smbclient
mich zu verbingen geht alles einwandfrei. smbclient //meinpc/public
fragt noch kurz nach einem Password, das mit einem freundlichen 'Enter'
einen anonymous login zurückgibt. Per Nautilus kann ich genauso einfach
verbinden. smb://192.168.1.1 und ich habe das public Verzeichnis vor mir.
Natürlich ist es 777 und ich habe auch schon Files hin und her geschoben.
Versuche ich er Windows 98 zu connecten bekomme ich einen unfreundlichen
Dialog: Auf \\Meinpc kann nicht zugegriffen werden. Hab mal versuch direkt
auf \\meinpc\public zuzugreifen, das geht aber auch nicht. Warum kann ich
per Windows nicht connecten oder browsen, der Server ist aber sichtbar?
[global]
workgroup = WORKGROUP
netbios name = meinpc
server string = sambaserver
security = user
guest account = nobody
hosts allow = 192.168.1.0/255.255.255.0
[public]
comment = offen
path = /home/public
browseable = yes
guest ok = yes
public = yes
writable = yes
printable = no
Danke
Hallo,
hab jetzt bei Google noch einiges gefunden, dass sich das Problem von selbst geloest hat, wenn man eine andere Version installiert!
Hab jetzt versucht, die Sourcen zu compilieren, bekomme aber da bei configure einen fehler so dass er nicht weiter macht.
Dazu mach ich aber einen neuen Thread auf!
Ueberlebenskuenstler
über eine Pipe, die mit stdin verbunden ist.
ls more
stdin/0 stdout/1 stdin/0 stdout/1
| | | |
|-->--+ +->-[pipe]->-+ +-->--> Bildschirm
(ls schließt sein stdin vermutlich, deshalb das '|')
lies dir was über pipe(2) und dup(2)/dup2(2) durch ...
hmm..ich denke ned dass slack sowas hat, standardmäßig
tät übrigens auch slack empfehlen, auch wenn root ne österreichische distro ist
Ahm...man kann aber diese standard config tools für ppp installieren, dann kannst dus per mouseklick installieren. aber per config file is auch ned all zu viel arbeit
Hallo vielleicht weis einer von euch Rat.
Ich habe hier eine Axis 2100 Netzwerk Kamera die die Bilder die sie aufnimmt in ein Verzeichniss hochlädt (via ftp). Jetzt würde ich gern das Programm ZoneMinder (http://www.zoneminder.com/) verwenden um diese Bilder auszuwerten. Das Program nimmt aber nur Daten von einem video4linux device an (/dev/video0).
Weis irgendjemand von euch wie ich die Dateien die per ftp kommen mit Zoneminder verwenden kann?
Ich hab hier so ziemlich jedes Unixbasierende Betriebssystem rumliegen, also mit welchem es dann funktioniert ist egal.
Danke für eure mühe,
Andreas
du schreibst den Quellcode in einer Datei mit der Endung .cpp .cc .C .cxx oder .c und dann musst den den g++ aufrufen
g++ <c++datei> -Wall -W -O3 -pipe -o <programm>
siehe http://gcc.gnu.org/onlinedocs/
das kommt drauf an, wie du die installiert hast.
Hast du die als Binär Packet installiert? (Wenn ja welches Format (RPM|DEB|...)?)
Oder aus dem Source?
Normal is GL dabei - kuck einfach mal nach den entsprechenden Headern ( /usr/include oder /usr/local/include ) - da müßtest du sowas wie GL/gl.h GL/glx.h usw. finden.
Der einzig wirkliche Unterschied ist, daß du nicht wie bei Windows wgl Extensions für manche Sachen aufrufst, sondern glx
Um dir schnell mal nen Source anzukucken - schau auf http://nehe.gamedev.net und kuck dir von den Tutorials die Linux Ports an.
Wie du nun arbeiten möchtest - mit SDL, GLX, GLUT usw. bleibt dir überlassen - die Entsprechenden Toolkits sind bei bedarf nachzuinstallieren. GLX ist auf jeden Fall schon bei.
SDL >> www.libsdl.org
Glut mußt du unter Google suchen
Hmm, ist das jetzt ein Frontend-Vergleichsthread?
Wenn ja: Ich verwende abcde, einfach "abcde" eingeben und die CD im Laufwerk wird gerippt und encodet und die Tracks werden dann gleich getagged und korrekt benannt (lang lebe CDDB ).
dass, du --prefix=xy angeben musst hat eine einfache ursache: du hast wahrscheinlich suse. das installiert alle kdes unter /opt/kde[major version]. aber kde sollte eigentlich standardmäßig nach /usr/local/kde so weit ich weiß. das configure script will also nach /usr/local/kde installieren, aber dort findet er keine includes.
und das andere: das configure script findet scheinbar eine qt version 2 auf dienem rechner, aber du gibts als prefix ein kde 3 dir an. daran kann s zb liegen: kde 3 bracht auch at 3. das ist sicher auch irgendwo bei dir installiert, wenn du kde 3 hast. schau dir die configure optionen --with-qt-dir=xy --with-qt-includes=xy und --with-qt-libraries=xy an. vielleicht kannst du damit was erreichen.
ok, habe gerade auch nochmal in diversen anderen nuix-newsgroups artikel von leuten gefunden die eigentlich die gleiche frage wie ich hatten.. denen wurde sid vorgeschlagen.
ich lade gerade bei ftp.freenet.de die sid-isos runter. geht gut mit dsl.. (knapp 100kb/s)
wen es interessiert, hier ist der direktlink:
ftp.freenet.de/pub/ftp.fsn.hu/pub/CDROM-Images/debian-unofficial/sid/
danke und gruß,
christian