How to make /dev/ttyACM0 (and friends) exclusive?

Yann Droneaud ydroneaud at opteya.com
Mon Mar 4 10:38:44 EST 2019


Hi,

Le lundi 04 mars 2019 à 08:04 -0500, Jeffrey Walton a écrit :
> On Sun, Mar 3, 2019 at 6:00 AM Greg KH <greg at kroah.com> wrote:
> > 
> > On Sun, Mar 03, 2019 at 03:55:44AM -0500, Jeffrey Walton wrote:
> > > ...
> > 
> > Again, go delete modem manager off of your system, it is the thing that
> > keeps opening the port up to see if you have made a valid connection on
> > the device or not.  If you write your own program to talk to the device,
> > modem manager is not needed at all, and is known to cause this problem.
> 
> Thanks Greg. I deleted modem manager, then ran two instances of my
> program. Both opened the device with O_EXCL, and both opens succeeded.
> They proceeded to much with one another's state.
> 

http://man7.org/linux/man-pages/man2/open.2.html

  "In general, the behavior  of  O_EXCL is undefined if it is used
   without O_CREAT. There is one exception: on Linux 2.6 and later,
   O_EXCL can be used without O_CREAT if pathname refers to a block
   device. If the block device is in use by the system (e.g., mounted),
   open() fails with the error EBUSY."

O_EXCL is intended to be used to prevent opening an existing file. Said
differently, it's used to ensure a new file is created, useful to
prevent race condition, where multiple processes compete to create a
file. For example think of temporary file created with random name.

Regards

-- 
Yann Droneaud
OPTEYA





More information about the Kernelnewbies mailing list