ID Number: Q35860
3.x 4.00
MS-DOS
Question:
We are writing a multiuser product that runs under MS-DOS on a network
environment. File locking is implemented using the MS-DOS SHARE
command. Our customers have found, however, that if one of the nodes
on the network crashes, the DOS SHARE table is not cleared, meaning
that files/records are locked. Is there any way to clear the MS-DOS
SHARE table WITHOUT bringing down the entire network and rebooting the
server machine?
Response:
Networks are supposed to have "keep alives." When a node crashes, the
server is told that the keep alive has died and the connection is
gone. At this point, the server cleans up after it. There is often a
time delay involved here, but it shouldn't be any longer than ten
seconds. Some less-than-robust networks don't have this service, and
thus this "automatic" cleanup is impossible.
The IBM PC NET and Microsoft MS NET servers have a submenu on the
server services screen that lets you close an open file. If you close
an open file that is locked, all of the stations that are hooked up to
this file will receive invalid handle errors. To correct this problem,
these workstations merely have to close their current handle, then
reopen it. This is one of the things the NET FILE command does. Later
versions of the Microsoft MS NET Server may add the ability to
invalidate only those file opens for a particular connection. This is
a better way of getting around a crashed workstation than rebooting
the server. Consult your network server documentation for more
information on this.
Unfortunately, there is no way to perform this service from a remote
workstation, nor is there a system call or API for performing this on
the server in an application. The only way in which this service can
be obtained is from the network server software.