Binding file lifescope to a process


 
Thread Tools Search this Thread
Top Forums Programming Binding file lifescope to a process
# 1  
Old 07-15-2008
Binding file lifescope to a process

Hi,
I need a way to bind the lifescope of a file to the lifescope of a process, but that file needs to remain visible in the filesystem for other processes. I've been able to do this on Widows based OSes, but the UNIX based OSes solution have eluded me so far. I am aware of the common solution where you can create a file and then unlink it, but then it only is visible to the process who created it, and I need it to be visible to other users on other machines. Any hints?
Thanks for any help on this matter.
Thanks!
# 2  
Old 07-15-2008
You need a file to remain visible, as in: test for the existence of or list with ls.
But no other process can read or write the file. Then at process exit the file is unlinked and gone forever.

1. each directory in the path the file lives in has to be other execute (world execute)
2. process opens the file, calls flock to gain exclusive read/write. If the processes that need to "see" the file are created by other usernames, open() allows you to set protections like 7-0-0 which means only the given user (or root) can do anything to the file
3. When process is done unlink the file and process exits.
# 3  
Old 07-15-2008
Hi Jim,
Thanks for your reply. I fear I may have not written enough details on the problem I am trying to solve. What I forgot to tell is that I am working in a possibly multiplatform solution (Windows and UN*X) and hence can't rely on OS locking mechanisms. The more I think about it the more it seems like it needs to be application-driven.

The problem with your solution is that it's probably not network safe, as different NFS implementations don't correctly support calls from flock or fnctl and these function calls are not guaranteed to be honored by file systems from other OSes. So basically any OS specific file locking is not going to work. What I am really looking for is a way to make sure a file is deleted when a process ends. I've thought of having a 2nd process monitor my first process and then clean up any files left behind in case of a crash, but it seems like a subpart solution when a perfectly viable solution exists for Windows based OSes (CreateFile with FILE_FLAG_DELETE_ON_CLOSE). Is there an equivalent OS provided service I can use that does that?

Don't know if this helps, but the reason I'm going through all this trouble is because I'm trying to implement some form of cross platform advisory file locking that is at least process-crash-tolerant where multiple users on different machines can take the lock for a given file. Obviously, if you've read any papers on such a locking mechanism, please do point me towards it, even if they aren't related at all with the approach I am trying to take right now.

Thanks again!
# 4  
Old 07-16-2008
Since the filesystem locking implementation across windows and unix(es) is entirely different
(mandatory -vs- advisory models) and NFS in particular uses statd and lockd userspace processes to guarantee file integrity and provide reasonable nlm behavior you may not be
able to convince me that any approach aimed at cross-platform file locking regardless of context (as you describe) is workable.

The deletion on process close that you desire (though I don't understand why this one feature is terribly important) can only be mandatorily enforced by an extant process.
The kernel will not clean up after you by default.

So a couple of ideas.
1. You could create a locking manager, have processes register a callback with it for action at time of the supplicant's exit and the manager would in turn be responsible for verification of process existence, granting of locks and privilege. All processes seeking access to controlled resources would have to consult the manager. This is the unix way. A way to do this via the new event trigger mechanisms (epoll linux, kqueue, bsd), shouldn't be too hard to write and would probably scale well.
2. Write a kernel module that implements your windows like behavior for a subset of processes and filesystems without the messiness of a locking manager.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Monitoring processes in parallel and process log file after process exits

I am writing a script to kick off a process to gather logs on multiple nodes in parallel using "&". These processes create individual log files. Which I would like to filter and convert in CSV format after they are complete. I am facing following issues: 1. Monitor all Processes parallelly.... (5 Replies)
Discussion started by: shunya
5 Replies

2. Shell Programming and Scripting

ftp binding error

Hi, I am rite now made my unix box machine as ftp server that is it acting both ways..Now I have sftp script but when I execute get the following error ftp: bind: Address already in use $ From Secure4Access server process at 31-Oct-11 04:52... Your session is inactive and will... (5 Replies)
Discussion started by: rahul125
5 Replies

3. UNIX for Dummies Questions & Answers

Binding command in wget.

I was recently reading a manual of wget and there was command as "binding-address" and I read about tcp/ip binding but i don't understand one thing is...what is the use of binding address in wget.. Can anyone help me with this. (6 Replies)
Discussion started by: jFreak619
6 Replies

4. Red Hat

Lazy binding related

Hi, I'm building an application that would connect to either one of the 2 databases in production. I want to keep the source code common for both environments. The problem lies in the fact that in the target servers there will be only one of the 2 databases installed, hence the application... (2 Replies)
Discussion started by: ishdeepanand
2 Replies

5. IP Networking

Binding the port number.

Hi all, Application A is using an port number 100 and is binded to an interface 1. Application B is using an port number 100 and is binded to an interface 2. can we bind the two applications on same port number based on interfaces. what i want to know is two... (3 Replies)
Discussion started by: vijaypdp2006
3 Replies

6. IP Networking

Binding the IP address

hi all, i have an udp based application that doesn't bind to any particular address. -->while sneding the packets, i have some doubts.... 1) can the packet be transmitted with an source ip address as 0.0.0.0 2) if we select an interface based on destination ip address,... (0 Replies)
Discussion started by: vijaypdp2006
0 Replies

7. Shell Programming and Scripting

Column wide file binding

What is the best way to bind files in column wide? Looks a simple, but I don't know the most economic way. I tried to merge, and cat function, but not success!! Ex.) file 1 1 2 3 2 3 4 file 2 3 4 5 4 5 6 file 3 2 3 4 1 2 7 I would like to see the result below file 4 1 2 3 3... (2 Replies)
Discussion started by: Jae
2 Replies

8. IP Networking

binding problems

i had a problem when using the bind function.. that is when i create a socket and bind it with a address(usually some file name)... when i run it once it goes on fine but the second time it tells a error since there is already a socket file in that name created by my previous run... but when i... (2 Replies)
Discussion started by: damn_bkb
2 Replies

9. HP-UX

CPU Binding in HP UX (psrset)

Hi All, I would like to know the behaviour of psrset in the following model. I have a 4 CPU machine on which i have a couple of databases running and a web application running. supposing i have processers 0 1 2 and 3 I bind processor 0 and 1 to the web application. This ensures that... (3 Replies)
Discussion started by: nileshkarania
3 Replies

10. Solaris

key binding in the terminal

Hello all I would like to make shift+insert a shortcut for "paste from clipboard". how do I do it? where can I find the format to set this key binding, or others? thanks Ori (4 Replies)
Discussion started by: orid
4 Replies
Login or Register to Ask a Question