09-26-2001
I'm not sure but I think you're asking if one process
can tell if a file was opened for read/write by another
process... correct?
In the function...
int fcntl(int fildes, int cmd, /* arg */ ...);
fildes must be a file descriptor to an open file
therefore, in order to use this, the current (or parent)
process should have already opened the file so you should
not get a "closed" file error.
You can use fcntl() to try to set an exclusive lock on a file
that you have previously opened and if another process
has opened this file for write access, fcntl() will fail. However,
if the other process has not opened the file for write access
and just for reading (i.e. O_RDONLY), then fcntl() will not fail.
Anyway, this is all system call level stuff.
If you're looking for a command line program to tell you
if a file is open or not, try lsof (LiSt Open Files) look at:
http://www.ensta.fr/internet/unix/sys_admin/lsof.html
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
I believe i have most of samba configured right but i get this error each time time try to run it. I was given suggestion that i touch the file, i did, but i still cannot rid myself of this error.
Any suggestions (2 Replies)
Discussion started by: macdonto
2 Replies
2. UNIX for Dummies Questions & Answers
I have a UNIX daemon process that's been started by a parent process, an application server.
The behavior of this daemon process is to inherit and use the app
server's file descriptors (ports/sockets).
When I shutdown the app server, the daemon continues to run, because there may be other... (1 Reply)
Discussion started by: kunalashar
1 Replies
3. Solaris
Hi
I have a script to remove log files when it reaches %70 usage in order to descending order of dates. But sometimes it happens to remove open - being processes files , so makes them unlinked from the directors and results them disappeared.
How can I solve this problem , simple scenario I... (9 Replies)
Discussion started by: xramm
9 Replies
4. UNIX for Advanced & Expert Users
I am having a client/server application which will download files from server. If server has directories, it will create directories/sub directories and then download files. In this process, I observed that number of open files are more than 400 (which is approxmately same as number of dir/subdir... (1 Reply)
Discussion started by: satyam90
1 Replies
5. Windows & DOS: Issues & Discussions
I'm trying to setup a cron job for my brother that goes out to the web and retrieves an excel file and overwrites the existing copy on his desktop. The problem I'm facing is I have to kill the process (excel.exe) if the file is open while the batch file runs, otherwise, it will create another copy... (2 Replies)
Discussion started by: quattro20v
2 Replies
6. Solaris
Hi
want to know what file (descriptor+filename+socket) is being accessed by particular process on solaris.
Purpose : while running perf. test, needs to find where is the bottleneck.
We are providing concurrnet load for around 1 hr and needs to capture data related to file usage pattern... (1 Reply)
Discussion started by: raxitsheth
1 Replies
7. Shell Programming and Scripting
I write a script which will stop an application, then restart it.
Sometimes it is succesful, sometimes not.
The problem is, when stop the application, some ports are still listenning (or not released). When start the application, it reports that ports are used, and can't continues.
I use... (1 Reply)
Discussion started by: rdcwayx
1 Replies
8. IP Networking
Hi,
I have read some forum theads about the open and close ports. some points are clear and it is not working on my machine or something am i missing?
I have commented out a port /etc/services, one application uses
then when i use the telnet <hostname> <port_blocked> it shows connected..... (1 Reply)
Discussion started by: balamv
1 Replies
9. Shell Programming and Scripting
I would like to create the following script:
run a python script with setsid
python may or may not fail with exception
check if all of the group processes were terminated correctly
if not, kill the remaining processes
How can I do that?
Thanks a lot (3 Replies)
Discussion started by: ASF Studio
3 Replies
10. Shell Programming and Scripting
Hi Gurus,
I have an input like the one below. What i wanted to achieved is to create a select statement based from that information
INPUTInsert into table_name (col1,col2,col3,col4,col5,DATE1,DATE2,col6,col7,col8,col9,col10,col11) values (6752,14932156,24,'ALL','Staff',to_date('04/17/2017... (6 Replies)
Discussion started by: ernesto
6 Replies
dup2(2) System Calls Manual dup2(2)
NAME
dup2 - duplicate an open file descriptor to a specific slot
SYNOPSIS
DESCRIPTION
fildes is a file descriptor obtained from a or system call.
fildes2 is a non-negative integer less than the maximum value allowed for file descriptors.
causes fildes2 to refer to the same file as fildes. If fildes2 refers to an already open file, the open file is closed first.
The file descriptor returned by has the following in common with fildes:
o Same open file (or pipe).
o Same file pointer (that is, both file descriptors share one file pointer.)
o Same access mode (read, write or read/write).
o Same file status flags (see fcntl(2),
The new file descriptor is set to remain open across system calls. See fcntl(2).
This routine is found in the C library. Programs using but not using other routines from the Berkeley importability library (such as the
routines described in bsdproc(3C)) should not give the option to ld(1).
RETURN VALUE
Upon successful completion, returns the new file descriptor as a non-negative integer, fildes2. Otherwise, it returns -1 and sets to indi-
cate the error.
ERRORS
fails if the following is true:
fildes is not a valid open file descriptor or fildes2 is not in the range of legal file descriptors.
An attempt to close
fildes2 was interrupted by a signal. The file is still open.
WARNINGS
A multithreaded application or an application with a signal handler can exhibit a race between on one thread and another kernel call that
assigns a new file descriptor while running on a second thread or signal handler. If fildes2 is free before the call was made, the other
thread or signal handler may win the race and acquire that descriptor (e.g., in an call). The thread calling can then close this file and
reuse the descriptor. This results in multiple functions improperly referring to the same file.
This race can be avoided either by ensuring that fildes2 references an open file before calling or by providing user-level synchronization
(or signal disabling) which makes sure that the thread and another thread or signal handler don't make competing calls into the kernel at
the same time.
SEE ALSO
close(2), creat(2), dup(2), exec(2), fcntl(2), open(2), pipe(2), privileges(5).
STANDARDS CONFORMANCE
dup2(2)