Заблокировать ком порт

Приветствую.

Для того чтобы устройство на ttyACM0 правильно функционировало, необходимо чтобы программа открывала его в монопольном режиме, например

program открывает /dev/ttyACM0, тогда команда echo “aaaa” > /dev/ttyACM0 должна закончиться неудачей. Minicom это делает, а у меня не получается.

Вот код открытия:

fd = open(device, O_RDWR | O_EXCL ); if (fd == -1) { /*	* Could not open the port.	*/	perror(device); //return NULL; }	//fcntl(fd, F_SETFL, FNDELAY); struct flock lock;	lock . l_type = F_WRLCK;	lock . l_whence = SEEK_SET;	lock . l_start = 0;	lock . l_len = 0;	if (fcntl (fd, F_SETLK, & lock) < 0) { perror(device); //return NULL;	}	int status; ioctl(fd, TIOCMGET, &status);	status &= ~TIOCM_RTS;	status &= ~TIOCM_DTR;	status &= ~TIOCM_CTS;	status &= ~TIOCM_DSR;	if (ioctl(fd, TIOCMSET, &status))	{ perror("ioctl"); //return 0;	}	struct termios options;	/* * Get the current options for the port... */	tcgetattr(fd, &options);	cfsetispeed(&options, baud_rate);	cfsetospeed(&options, baud_rate); options.c_cflag &= ~PARENB;	options.c_cflag &= CSTOPB;	options.c_cflag &= ~CSIZE;	options.c_cflag |= CS8;	options.c_cflag &= ~CRTSCTS;	options.c_oflag &= ~OPOST; //raw output options.c_lflag &= ~(ICANON | ECHO | ISIG);	/* * Enable the receiver and set local mode... */	options.c_cflag |= (CLOCAL | CREAD | baud_rate); /* * Set the timeouts VMIN is the minimum amount of characters to read */ //options.c_cc[VMIN] = 0; /* * The amount of time to wait for the amount of data specified by VMIN in tenths of a second */ //options.c_cc[VTIME] = 0;	/* * Set the new options for the port... */	tcsetattr(fd, TCSANOW, &options);

Подскажите, что не так. Либо кусок кода.где работает блокировка. Спасибо