2013-04-25 2 views
0

Для следующего фрагмента кода, я получаю сообщение об ошибке:Невозможно открыть файл C

Unable to open file: No such file or directory 

redirect_ptr это символ ** И я пытался печати redirect_ptr [0], он печатает правильно. Любая идея, где может возникнуть проблема?

if ((in_fd = open(redirect_ptr[0], O_RDWR | O_CREAT)) == -1) { 
    perror("Unable to open file"); 
    return -1; 
} 
+2

У вас есть файл, который вы хотите открыть? .. – piokuc

+0

Да, он должен его создать в любом случае – user44273

+0

добавить отладочную печать имени файла – bobah

ответ

2

При создании файла open() требуется дополнительный аргумент, бит разрешения для создаваемого файла. Вам нужно сделать, например.

if ((in_fd = open(redirect_ptr[0], O_RDWR | O_CREAT, 0644) == -1) 

Это не может быть причиной ошибки вы получаете, однако, если ошибка не является «Нет такого файла или каталога», то это именно то, что это не так, вы программа не может найти файл.

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

Часто полезно печатать имя файла внутри пары '', поэтому вы можете увидеть, есть ли какие-то пробелы, которых не должно быть. добавить

printf("Filename: '%s'\n",redirect_ptr[0]); 

к вашему коду. И если он выглядит хорошо, сделайте ls -l на имя файла, которое он распечатает, и он находится в рабочем каталоге процесса.

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