Languages and Scripting
Showing results for 
Search instead for 
Do you mean 

Shareable writing into file

SOLVED
Go to Solution
Highlighted
Advisor

Shareable writing into file

Hello.

I need to write in a log file from several processes.

I am using the next solution:

int logFile;
logFile = open(stampedPath.ptr, O_WRONLY | O_APPEND | O_CREAT, 0666);
write(logFile, buffer.ptr, buffer.len);//to achieve atomic output
close(logFile);

 In Linux(Red Hat) it works perfectly.

On OpenVMS I've got the next message in the second process: file currently locked by another user.

 

I've read about fwrite with additional keys from c language extension, but it is queit hard to find out in google full manual for this keys.

Furthermore:

  • I am not shure that in this case family of printf functions  will give atomic output (in Linux they allow for a processes to mix output).
  • I dont want to duplicate the code.

Could I resolve this situation with open/write/close using?

1 ACCEPTED SOLUTIONS
Advisor

Re: Shareable writing into file

solution


 logFile = open(stampedPath.ptr, O_WRONLY | O_APPEND | O_CREAT, 0666
#ifdef VAX
                 ,"shr = del, get, put, upd", "ctx = stm", "ctx = bin"
#endif

2 REPLIES
Advisor

Re: Shareable writing into file

I've got some hurry with it. I've found the post with linked issue.

If the problem and the solution is identical I'll delete this one.

Advisor

Re: Shareable writing into file

solution


 logFile = open(stampedPath.ptr, O_WRONLY | O_APPEND | O_CREAT, 0666
#ifdef VAX
                 ,"shr = del, get, put, upd", "ctx = stm", "ctx = bin"
#endif