Martin McCormick <martin@xxxxxxxxxxxxxxxxxx> writes: > The audio device file descriptor is defined as > FILE *audio_fd; ... > Breakpoint 2, main (argc=2, argv=0xbffff684) at vx2ch.c:118 > 118 if (ioctl(audio_fd, SNDCTL_DSP_SETFMT, &format)==-1) A "FILE *" is not a file descriptor -- libc functions like fopen, fread, fprintf etc. work with FILE *s, and system calls like open, read and ioctl work with integer file descriptors. You can use the fileno function to get the file descriptor that the FILE * is using, so change "audio_fd" to "fileno(audio_fd)" in that ioctl call, and it should be a bit happier. The compiler should be complaining about you converting a pointer to an integer when you compile that ioctl call as it currently stands; it's always a good idea to use the -Wall compiler flag and pay careful attention to the warnings it produces. -- Adam Sampson <ats@xxxxxxxxx> <http://offog.org/>