2012-10-31 2 views
1

Открываем файл, используя системный вызов open().Системный вызов open() разрешений

if ((fd2 = open(logFile, O_RDWR |O_APPEND | O_CREAT), 0666) == -1) 
    DieWithError("open() failed"); 

Этот файл, который является FTP_track.log, создан без проблем. Проблема в том, что у меня есть режим 0666, который читается и записывается для всех, я не могу открыть файл в unix. Мне нужно изменить права доступа к свойствам файла для чтения и записи.

Любые идеи? Спасибо.

+0

Возможно, ваш umask запрещает разрешение на запись для всех. –

ответ

2

Проблема с вашей линией в том, что скобки не совпадают. Ваше выражение анализируется как fd2 = open(), 0666. В C выражение expr1, expr2 имеет значение expr2, поэтому ваш оператор if в основном говорит fd2 = 0666.

+1

Согласен, что скобки ошибочны; не согласны с анализом; назначение имеет более высокий приоритет, чем запятую, поэтому это 'fd2 = open (...)', а затем 0666 - значение по сравнению с -1. –

+0

Спасибо !!! Вы были правы ... настолько странно, что файл создавался должным образом, у меня не было ошибок, еще раз спасибо. – Kelis

Смежные вопросы