fopen for writing but not exclusive












0















I want to use fopen("file", "w") to open a file for writing but not exclusive. I.e. I want to have another process read the file while it is still open.



Note that I have a flush after every line so I won't miss anything. Writing will be idle at the time the other process reads from the file.



The documentation does not mention exclusive but experimenting shows that it is exclusive.



Is there a way?










share|improve this question















migrated from superuser.com Feb 11 at 13:26


This question came from our site for computer enthusiasts and power users.



















  • Is this a C or C++ application? Is your target application environment Windows or Win/RT or something else? What standard are you targeting (C99, C++11, etc.)?

    – Richard Chambers
    Feb 11 at 16:26













  • Which programming language does this target?

    – Nico Haase
    Feb 11 at 16:27











  • I'm using an old version of Borland C in Windows XP DOS command.com. So I doubt if any modern form of fopen will work. (Sorry I didn't mention that up front ... I just didn't think of it).

    – eddyq
    Feb 12 at 15:37
















0















I want to use fopen("file", "w") to open a file for writing but not exclusive. I.e. I want to have another process read the file while it is still open.



Note that I have a flush after every line so I won't miss anything. Writing will be idle at the time the other process reads from the file.



The documentation does not mention exclusive but experimenting shows that it is exclusive.



Is there a way?










share|improve this question















migrated from superuser.com Feb 11 at 13:26


This question came from our site for computer enthusiasts and power users.



















  • Is this a C or C++ application? Is your target application environment Windows or Win/RT or something else? What standard are you targeting (C99, C++11, etc.)?

    – Richard Chambers
    Feb 11 at 16:26













  • Which programming language does this target?

    – Nico Haase
    Feb 11 at 16:27











  • I'm using an old version of Borland C in Windows XP DOS command.com. So I doubt if any modern form of fopen will work. (Sorry I didn't mention that up front ... I just didn't think of it).

    – eddyq
    Feb 12 at 15:37














0












0








0








I want to use fopen("file", "w") to open a file for writing but not exclusive. I.e. I want to have another process read the file while it is still open.



Note that I have a flush after every line so I won't miss anything. Writing will be idle at the time the other process reads from the file.



The documentation does not mention exclusive but experimenting shows that it is exclusive.



Is there a way?










share|improve this question
















I want to use fopen("file", "w") to open a file for writing but not exclusive. I.e. I want to have another process read the file while it is still open.



Note that I have a flush after every line so I won't miss anything. Writing will be idle at the time the other process reads from the file.



The documentation does not mention exclusive but experimenting shows that it is exclusive.



Is there a way?







visual-studio-2015






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Feb 11 at 16:25









Richard Chambers

10.1k24268




10.1k24268










asked Feb 8 at 14:44









eddyqeddyq

5181719




5181719




migrated from superuser.com Feb 11 at 13:26


This question came from our site for computer enthusiasts and power users.









migrated from superuser.com Feb 11 at 13:26


This question came from our site for computer enthusiasts and power users.















  • Is this a C or C++ application? Is your target application environment Windows or Win/RT or something else? What standard are you targeting (C99, C++11, etc.)?

    – Richard Chambers
    Feb 11 at 16:26













  • Which programming language does this target?

    – Nico Haase
    Feb 11 at 16:27











  • I'm using an old version of Borland C in Windows XP DOS command.com. So I doubt if any modern form of fopen will work. (Sorry I didn't mention that up front ... I just didn't think of it).

    – eddyq
    Feb 12 at 15:37



















  • Is this a C or C++ application? Is your target application environment Windows or Win/RT or something else? What standard are you targeting (C99, C++11, etc.)?

    – Richard Chambers
    Feb 11 at 16:26













  • Which programming language does this target?

    – Nico Haase
    Feb 11 at 16:27











  • I'm using an old version of Borland C in Windows XP DOS command.com. So I doubt if any modern form of fopen will work. (Sorry I didn't mention that up front ... I just didn't think of it).

    – eddyq
    Feb 12 at 15:37

















Is this a C or C++ application? Is your target application environment Windows or Win/RT or something else? What standard are you targeting (C99, C++11, etc.)?

– Richard Chambers
Feb 11 at 16:26







Is this a C or C++ application? Is your target application environment Windows or Win/RT or something else? What standard are you targeting (C99, C++11, etc.)?

– Richard Chambers
Feb 11 at 16:26















Which programming language does this target?

– Nico Haase
Feb 11 at 16:27





Which programming language does this target?

– Nico Haase
Feb 11 at 16:27













I'm using an old version of Borland C in Windows XP DOS command.com. So I doubt if any modern form of fopen will work. (Sorry I didn't mention that up front ... I just didn't think of it).

– eddyq
Feb 12 at 15:37





I'm using an old version of Borland C in Windows XP DOS command.com. So I doubt if any modern form of fopen will work. (Sorry I didn't mention that up front ... I just didn't think of it).

– eddyq
Feb 12 at 15:37












1 Answer
1






active

oldest

votes


















0














Shared access on files is an OS-specific feature. fopen is too generic and does not provide that kind of control. You would need to use something more specific. If you are using a microsoft platform (assuming since you tagged for VS 2015) you can use _fsopen or _wfsopen - they have a third parameter to specify the shared access.



_fsopen("file", "w", _SH_DENYWR);


this will open the file for writing and allow others to read from it (but not write to it).




The argument shflag is a constant expression consisting of one of
the following manifest constants, defined in Share.h.




  • Term Definition

  • _SH_COMPAT Sets Compatibility mode for 16-bit applications.

  • _SH_DENYNO Permits read and write access.

  • _SH_DENYRD Denies read access to the file.

  • _SH_DENYRW Denies read and write access to the file.

  • _SH_DENYWR Denies write access to the file.




Other OS/platforms may support some variation of fsopen too.






share|improve this answer

























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54631617%2ffopen-for-writing-but-not-exclusive%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Shared access on files is an OS-specific feature. fopen is too generic and does not provide that kind of control. You would need to use something more specific. If you are using a microsoft platform (assuming since you tagged for VS 2015) you can use _fsopen or _wfsopen - they have a third parameter to specify the shared access.



    _fsopen("file", "w", _SH_DENYWR);


    this will open the file for writing and allow others to read from it (but not write to it).




    The argument shflag is a constant expression consisting of one of
    the following manifest constants, defined in Share.h.




    • Term Definition

    • _SH_COMPAT Sets Compatibility mode for 16-bit applications.

    • _SH_DENYNO Permits read and write access.

    • _SH_DENYRD Denies read access to the file.

    • _SH_DENYRW Denies read and write access to the file.

    • _SH_DENYWR Denies write access to the file.




    Other OS/platforms may support some variation of fsopen too.






    share|improve this answer






























      0














      Shared access on files is an OS-specific feature. fopen is too generic and does not provide that kind of control. You would need to use something more specific. If you are using a microsoft platform (assuming since you tagged for VS 2015) you can use _fsopen or _wfsopen - they have a third parameter to specify the shared access.



      _fsopen("file", "w", _SH_DENYWR);


      this will open the file for writing and allow others to read from it (but not write to it).




      The argument shflag is a constant expression consisting of one of
      the following manifest constants, defined in Share.h.




      • Term Definition

      • _SH_COMPAT Sets Compatibility mode for 16-bit applications.

      • _SH_DENYNO Permits read and write access.

      • _SH_DENYRD Denies read access to the file.

      • _SH_DENYRW Denies read and write access to the file.

      • _SH_DENYWR Denies write access to the file.




      Other OS/platforms may support some variation of fsopen too.






      share|improve this answer




























        0












        0








        0







        Shared access on files is an OS-specific feature. fopen is too generic and does not provide that kind of control. You would need to use something more specific. If you are using a microsoft platform (assuming since you tagged for VS 2015) you can use _fsopen or _wfsopen - they have a third parameter to specify the shared access.



        _fsopen("file", "w", _SH_DENYWR);


        this will open the file for writing and allow others to read from it (but not write to it).




        The argument shflag is a constant expression consisting of one of
        the following manifest constants, defined in Share.h.




        • Term Definition

        • _SH_COMPAT Sets Compatibility mode for 16-bit applications.

        • _SH_DENYNO Permits read and write access.

        • _SH_DENYRD Denies read access to the file.

        • _SH_DENYRW Denies read and write access to the file.

        • _SH_DENYWR Denies write access to the file.




        Other OS/platforms may support some variation of fsopen too.






        share|improve this answer















        Shared access on files is an OS-specific feature. fopen is too generic and does not provide that kind of control. You would need to use something more specific. If you are using a microsoft platform (assuming since you tagged for VS 2015) you can use _fsopen or _wfsopen - they have a third parameter to specify the shared access.



        _fsopen("file", "w", _SH_DENYWR);


        this will open the file for writing and allow others to read from it (but not write to it).




        The argument shflag is a constant expression consisting of one of
        the following manifest constants, defined in Share.h.




        • Term Definition

        • _SH_COMPAT Sets Compatibility mode for 16-bit applications.

        • _SH_DENYNO Permits read and write access.

        • _SH_DENYRD Denies read access to the file.

        • _SH_DENYRW Denies read and write access to the file.

        • _SH_DENYWR Denies write access to the file.




        Other OS/platforms may support some variation of fsopen too.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Feb 11 at 16:35









        Richard Chambers

        10.1k24268




        10.1k24268










        answered Feb 11 at 16:11









        Jeff R.Jeff R.

        9621612




        9621612
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54631617%2ffopen-for-writing-but-not-exclusive%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            How to make a Squid Proxy server?

            Is this a new Fibonacci Identity?

            19世紀