Shareable writing into file (364 Views)
Reply
Advisor
AlexanderM
Posts: 19
Registered: ‎09-26-2013
Message 1 of 3 (364 Views)
Accepted Solution

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?

Advisor
AlexanderM
Posts: 19
Registered: ‎09-26-2013
Message 2 of 3 (360 Views)

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
AlexanderM
Posts: 19
Registered: ‎09-26-2013
Message 3 of 3 (341 Views)

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

The opinions expressed above are the personal opinions of the authors, not of HP. By using this site, you accept the Terms of Use and Rules of Participation.