LINUX.ORG.RU

C++, fstream, пользователи, fastcgi, nginx, создать файл /tmp/123.txt


0

0

Запущен fastcgi-процесс, в нём написано (в момент старта делать):

std::fstream fff ( "/tmp/zuzuzu.txt" );
fff << "dudu";
fff.flush ( );
fff.close ( );

Сцуко. Если файл (хотя-бы 0 длины) существует, в файле появляется dudu, иначе хрен - файл не создаётся. Хотя подопытная не-fastcgi софтина создаёт zuzuzu.txt

ls -ld /tmp/ == 777

Застрелиться из рогатки.

Процесс fastcgi работает с правами юзера имени меня, но это неважно, ведь 777. Коня мне подайте с абрикосами.

Ответ на: комментарий от Eshkin_kot

Ошибка: "No such file or directory"

А тот же код вне fastcgi-приложения - работает.

gustavo
() автор топика
Ответ на: комментарий от xawari

Может и должны, но в данный момент живы. Я опираюсь только на данный факт )

Си-стайл - это дрочево и небезопасно.

gustavo
() автор топика

strace рулит. Смотри что делает твой код:

open("/tmp/zuzuzu.txt", O_RDWR) = -1 ENOENT (No such file or directory)

С флагом O_RDWR файл не создаётся если он не существует. По умолчанию в конструктор fstream'а передаётся ios_base::openmode mode = ios_base::in | ios_base::out. Если оставить только ios_base::out, или вообще заменить на ofstream, то получим вот это:

open("/tmp/zuzuzu.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3

Deleted
()
Ответ на: комментарий от gustavo

>Си-стайл - это дрочево и небезопасно.
Ты тупой школьник, реально

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.