странная работа lseek и mv (баг или фича?)

Модератор: Модераторы разделов

Ответить
Аватара пользователя
anonymous.ru
Сообщения: 614

странная работа lseek и mv

Сообщение anonymous.ru »

У кого под рукой есть MacOS проверьте пожалуйста работу программы

Код:

#include <sys/types.h> #include <unistd.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> int main() { int fd; ssize_t rwcount; off_t fdseek; char rbuff[10]; if ((fd=creat("newfile",0600))==-1) { perror("create error"); return 1; } if ((rwcount=write(fd,"unix",4))==-1) { perror("write error"); return 1; } close(fd); if ((fd=open("newfile",O_RDONLY))==-1) { perror("open error"); return 1; } if ((fdseek=lseek(fd,-1,SEEK_END))==-1) { perror("lseek error"); return 1; } fprintf(stderr,"offset = %d \n",fdseek); if ((rwcount=read(fd,rbuff,1))==-1) { perror("read error"); return 1; } fprintf(stderr,"read count = %d \n",rwcount); if (rwcount>0) { fprintf(stderr,"read buffer = "); write(2,rbuff,rwcount); fprintf(stderr,"\n"); } return 0; }

Под линуксом выводит следующие:

Код: Выделить всё

offset = 3
read count = 1
read buffer = x


Под MacOS read возвращал 0 (сейчас проверить не на чем).


Теперь про mv
в линуксе вот такое перемещение файла срабатывает

linux

$ mkdir d1 d2 $ touch d1/f1 $ chmod 0000 d1/f1 $ chmod 0300 d1 d2 $ mv d1/f1 d2


а в MacOS наблюдалось ужасное: файл из d1 пропадал, а в d2 не появлялся.
Хотя вот так все работало:

MacOS

$ mkdir d1 d2 $ touch d1/f1 $ chmod 0000 d1/f1 $ chmod 0300 d1 d2 $ ln d1/f1 d2 $ rm d1/f1



И еще не получилось создать разреженный файл (файл с дырой).
:drinks:
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: странная работа lseek и mv

Сообщение diesel »

Код: Выделить всё

diesel@bender:~/tmp/test$ uname -a
Darwin bender.local 10.7.0 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386


(Mac OS X 10.6.7)

файл появляется в d2, ну и:

Код: Выделить всё

diesel@bender:~/tmp/test$ ./a.out
offset = 3
read count = 1
read buffer = x
Спасибо сказали:
Аватара пользователя
anonymous.ru
Сообщения: 614

Re: странная работа lseek и mv

Сообщение anonymous.ru »

Ок. Спасибо.
Уточню какая это была версия системы.
:drinks:
Спасибо сказали:
Аватара пользователя
anonymous.ru
Сообщения: 614

Re: странная работа lseek и mv

Сообщение anonymous.ru »

Проблема с lseek проявляется в 10.7.0

Странная работа mv была в дрогой системе, версию узнаю в пятницу.
:drinks:
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: странная работа lseek и mv

Сообщение diesel »

anonymous.ru писал(а):
07.05.2011 21:33
Проблема с lseek проявляется в 10.7.0

10.7.0 - это Lion, она не вышла еще.
Спасибо сказали:
Lan4
Сообщения: 339
Статус: hikki
ОС: Arch

Re: странная работа lseek и mv

Сообщение Lan4 »

diesel писал(а):
07.05.2011 22:33
10.7.0 - это Lion, она не вышла еще.

Имелось в виду ядро 10.7.0, т.е. мак 10.6.7
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: странная работа lseek и mv

Сообщение diesel »

Lan4 писал(а):
07.05.2011 22:43
diesel писал(а):
07.05.2011 22:33
10.7.0 - это Lion, она не вышла еще.

Имелось в виду ядро 10.7.0, т.е. мак 10.6.7

Тогда очень странно, пример запуска выше, я как раз в принципе то в 10.6.7 запускал, я так понял работает как ожидалось.
Спасибо сказали:
Аватара пользователя
anonymous.ru
Сообщения: 614

Re: странная работа lseek и mv

Сообщение anonymous.ru »

Спасибо.
Главное я понял, что проблема не носит системный характер.
К сожалению этот конкретный Мак я теперь увижу только недели через три.
diesel писал(а):
07.05.2011 22:33
10.7.0 - это Lion, она не вышла еще.

Ну, человек как раз сказал, что у него какая-то бета версия,

:drinks:
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: странная работа lseek и mv

Сообщение diesel »

anonymous.ru писал(а):
08.05.2011 11:20
diesel писал(а):
07.05.2011 22:33
10.7.0 - это Lion, она не вышла еще.

Ну, человек как раз сказал, что у него какая-то бета версия,

понятно, я себе утаскивал образы, но так и не поставил, возможно стоит именно в этой версии ознакомится с man соотвествующих функций, возможно там это поведение отражено(ну или если нет - тогда действительно баг).
Спасибо сказали:
Ответить