Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Не получается получить дескриптор файла

Ответить
Настройки темы
Не получается получить дескриптор файла

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Совсем не знаю что делать: при использовании open() все время возвращается стандартный ввод (0), то есть

Код: Выделить весь код
int fd;
fd = open(file, O_READONLY);
после этого fd = 0 какие бы файлы и пути ему ни подсовывал.

Я только начал с программированием под *nix возиться, может это какие-то стандартные грабли ? Поиск в Google и по форуму не помог.

Отправлено: 00:34, 24-08-2007

 

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот всё, что имеется:

Код test.c:

Код: Выделить весь код
#include <stdio.h>
int main() {
        int fd;
        if ((fd = open("hello.c", 2) < 0)) {
                fprintf(stdout, "Cannot open for reading\n");
        }
        fprintf(stdout, "START: %u\n", fd);
        return 0;
}

Листинг директории:

Код: Выделить весь код
-r-xr-xr-x  1 root root  115 Авг 21 14:29 cleanup.sh*
-rwxr-xr-x  1 root root 6786 Авг 22 21:58 hello*
-rw-r--r--  1 root root  176 Авг 22 21:58 hello.c
-rwxr-xr-x  1 root root 7992 Авг 23 22:36 inslog*
-rw-r--r--  1 root root  993 Авг 23 22:36 inslog.c
drwxr-xr-x  2 root root 1024 Авг 23 21:31 log/
-rwxr-xr-x  1 root root 7028 Авг 24 00:54 test*
-rw-r--r--  1 root root  181 Авг 24 00:53 test.c
-rw-r--r--  1 root root  370 Авг 23 20:18 test.php
Вбиваем fopen("hello1.c") выводит:
Cannot open for reading
START: 1

Вбиваем fopen("hello.c") выводит:
START: 0

Крыша едет

Отправлено: 01:16, 24-08-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для ruslandh

info man howto


Сообщения: 6958
Благодарности: 384

Профиль | Сайт | Отправить PM | Цитировать


Цитата man open:
КРАТКАЯ СВОДКА
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
int creat(const char *pathname, mode_t mode);

ОПИСАНИЕ
Системный вызов open превращает имя файла в дескриптор файла (небольшое
неотрицательное число, используемое при последующем вводе-выводе, например, с
read, write, и т. п. Если системный вызов завершается успешно, возвращенный
файловый дескриптор является самым маленьким дескриптором, который еще не
открыт процессом. В результате этого вызова появляется новый открытый файл, не
разделяемый ни с каким процессом (разделяемые открытые файлы могут возникнуть в
результате системного вызова fork(2). Новый файловый дескриптор будет
оставаться открытым при выполнении функции exec(2) (смотри описание fcntl(2)).
Указатель в файле устанавливается в начало.
PS А зачем программы под root писать ?

-------
Поспешай не торопясь


Отправлено: 00:16, 29-08-2007 | #3



Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Не получается получить дескриптор файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Получить максимальное число (в имени файла) D_Master AutoIt 2 11-06-2009 19:03
[Python] Как получить количество связей у файла? Saigono_Daitoryo Программирование в *nix 1 17-02-2009 21:47
Не получается сделать DVDrip, ошибка чтения VOB-файла ummnikk Видео и аудио: обработка и кодирование 2 12-01-2008 23:17
Ошибка "неправильный дескриптор файла" на Win XP SP2 D1ON1S Microsoft Windows 2000/XP 0 28-03-2007 21:20
Как получить данные из xml-файла? ptt Программирование и базы данных 1 14-10-2004 09:45




 
Переход