#include "mpi.h"
#include <stdio.h>


int main (int argc, char** argv)

{

MPI_Init(&argc,&argv);
int rank,size,len;
char name[MPI_MAX_PROCESSOR_NAME];
MPI_Comm_size(MPI_COMM_WORLD,&size);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Get_processor_name(name,&len);
printf("Process %02d (of %02d) on %s alive\n",rank,size,name); fflush(stdout);

int * io_chan;
int   flag;
MPI_Attr_get(MPI_COMM_WORLD,MPI_IO,&io_chan,&flag);
 if (flag==0) printf("[Rank %d]: No MPI IO attribute found ?\n",rank);
else {
  switch (*io_chan) {
    case MPI_PROC_NULL: printf("[Rank %d]: No rank has IO access ?\n",rank); break;
    case MPI_ANY_SOURCE: printf("[Rank %d]: IO access from any rank\n",rank); break;
    default: printf("[Rank %d]: Rank %d has IO\n",rank,*io_chan);break;
  }
}
fflush(stdout);

MPI_Finalize();

 return 0; 
} 
