为什么以下用mpicc编译并用mpiexec -n 4 prg执行的代码显示prg而不显示mpiexec。如何使程序打印mpiexec?

#include <stdio.h>
#include <mpi.h>
int main(int argc, char *argv[])
{
  printf("Command executed : %s\n",argv[0]);
  MPI_Init(NULL, NULL);
  /* some code */
  MPI_Finalize();
}

最佳答案

不可能知道二进制文件是如何被调用的(以一种通用的可移植方式)。 MPI无法确定这一点。甚至mpiexec本身也只是宽松地指定。

即使没有MPI和多个系统,通常也是不可能的。 prg可以通过多种方式调用,例如:

/bin/env prg
bash -c 'prg'
./my_prg_wrapper.sh
x='() { :;}; prg'

10-07 17:45