補足。man tmpfileより。

説明
    tmpfile()関 数は<stdio.h>で定義されている P_tmpdirをパスの
    先頭に使ったユニークなファイルを作成する。テンポラリファイ
    ルはバイナリリードライトモード(w+b)で作成される。このファ
    イルはクローズ時またはプログラムの終了時に自動的に削除され
    る。

準拠
    SVID 3, POSIX, BSD 4.3, ISO 9899

実行ファイルと同じディレクトリに書き込み権限があるとは限らないし、
そもそもPOSIXでは実行ファイルのディレクトリを知る方法を定義していない。