В Open MPI stdin
читается процессом mpirun
.
Затем считанные данные перенаправляются в одну задачу MPI (задача 0, если явно не указано иное), и это может включать в себя orted
демон (ы).
Нижняя строка, и с точки зрения задачи MPI, которая перенаправлена stdin
, нулевой дескриптор файла равен pipe
локальному демону (mpirun
или orted
) и именно поэтому tcgetattr()
и друзья терпят неудачу.
Обратите внимание, что все другие задачи MPI имеют нулевой дескриптор файла, указывающий на /dev/null
.
IIRC, SLURM
предоставляет опцию srun
(например, прямой запуск), в которой stdin
является псевдотерминалом.