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@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