debugging a serial communication tool

hey guys, i need some help debugging this code:

int open_portandprint(char* load){
	int fd; /* File descriptor for the port */
	fd = open("/dev/ttyACM0", O_RDWR | O_NDELAY);
    	fcntl(fd, F_SETFL, 0);
	struct termios options,oldtios;
	if (tcgetattr(fd, &oldtios) != 0) return(-1);
	cfsetispeed(&options, B9600);            /* setze 9600 bps */
	cfsetospeed(&options, B9600);
	options.c_cflag &= ~PARENB;               /*  kein Paritybit */
	options.c_cflag &= ~CSTOPB;               /* 1 Stopbit */
  	options.c_cflag &= ~CSIZE;                /* 8 Datenbits */
  	options.c_cflag |= CS8; 
	options.c_oflag &= ~OPOST;
	tcsetattr(fd, TCSANOW, &options);

	int n = 0;
	int m = strlen(load);
	n =  write(fd, load, m);
	return (fd);
    }

it should initialize the virtual com port on my computer and write some bytes of code. but in only works, while i have telnet up an running. so i think some of my flags are wrong.
can somebody see what my problem is?
thank so far,
erik

This does not look like arduino code ...

what I see is that the fd is nowhere closed

n = write(fd, load, m);
what is n after the statement, it should be equal to m ...

it is code that runs on my netbook.
ive done some experimenting and it seems, that when i run the code with the arduino connectet, the arduino reboots. on the arduino runs the SerialDisplay example, wich puts everything from the serial input off the arduino to a lcd (and this works, ive testet it with the serial monitor).
this code works, as long as i have the serial monitor open.

opening a serial port does set some HW handshake lines high/low.
I don't recall the details but they are discussed more on this forum -> search in the upper right for 'serial open reset Arduino' or so)