PETSc version 3.17.0
Fix/Edit manual page

# PetscVFPrintf

All PETSc standard out and error messages are sent through this function; so, in theory, this can can be replaced with something that does not simply write to a file.

### Synopsis

    PetscErrorCode PetscVFPrintfDefault(FILE *fd,const char *format,va_list Argp)

To use, write your own function for example,

    PetscErrorCode mypetscvfprintf(FILE *fd,const char format[],va_list Argp)

    { $  PetscErrorCode ierr;

     PetscFunctionBegin;

      if (fd != stdout && fd != stderr) {  handle regular files

         CHKERR(PetscVFPrintfDefault(fd,format,Argp));

     } else {

        char   buff[BIG];

        size_t length;

        PetscCall(PetscVSNPrintf(buff,BIG,format,&length,Argp));

        now send buff to whatever stream or whatever you want

    }

    PetscFunctionReturn(0);

    } then before the call to PetscInitialize() do the assignment

       PetscVFPrintf = mypetscvfprintf;

### Notes

For error messages this may be called by any process, for regular standard out it is called only by process 0 of a given communicator

### Developer Notes

this could be called by an error handler, if that happens then a recursion of the error handler may occur and a crash

### See Also

PetscVSNPrintf(), PetscErrorPrintf()

### Level

developer

### Location

src/sys/fileio/mprint.c
Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages