ios::app funguje. Vlastně původně jsem si myslel, že fungovat nebude, protože to používám k detekci toho, zda soubor už existuje nebo ne (C++neumi O_EXCL). Pokud mi tellp vrátí nenulový výsledek, tak vyhodím výjimku. Přišlo mi, že v režimu app nemůže tellp fungovat, protože to víc funguje jak stream.
Co vlastně dělá ios::trunc.... mě tedy nedělá nic, protože samotné ios::out udělá automaticky trunc. Doteď jsem ho všude uváděl, ale koukám, že naprosto zbytečně.
Jen tak si všimněte, že v strace není použit příkaz O_CLOEXEC. Dnešního hlediska bezpečnostní nutnost. (STL je vlastně nebezpečná)