[python] ioctl() v céčku funguje, v Pythonu selže

Jan Martinek honza na dp.fce.vutbr.cz
Středa Březen 22 04:15:38 CET 2006


Ahoj,

když v Pythonu napíšu tohle,

import tty, os, fcntl
fd = os.open('/dev/ttyS0', os.O_RDWR | os.O_SYNC)
fcntl.ioctl(fd, tty.TIOCMBIC, tty.TIOCM_DTR)

tak to vyvolá výjimku
IOError: [Errno 14] Bad address

zatímco ekvivalentní program v C (puštěný na stejném stroji pod stejným 
uživatelem)

#include <stdio.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>

int main(int argc, char **argv) {
   int fd, r;
   int iFlags = TIOCM_DTR;

   fd = open("/dev/ttyS0",  O_RDWR | O_SYNC);
   if (fd == -1){
     perror("Failed to open port");
     return -1;
   }
   r = ioctl(fd, TIOCMBIC, &iFlags); /* Vynuluje DTR */
   if (r == -1){
     perror("TIOCMBIC failed");
     return -1;
   }
   close(fd);
   return 0;
}

funguje a žádnou chybu nevyhodí. Netušíte, v čem může být rozdíl?

Díky
johny


Další informace o konferenci Python