Модератор: Модераторы разделов
anonymous.ru
Сообщения: 614
Сообщение
anonymous.ru » 30.04.2011 16:21
У кого под рукой есть 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;
}
Под линуксом выводит следующие:
Под 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
И еще не получилось создать разреженный файл (файл с дырой).
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Сообщение
diesel » 06.05.2011 03:37
Код: Выделить всё
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
Сообщение
anonymous.ru » 06.05.2011 09:24
Ок. Спасибо.
Уточню какая это была версия системы.
anonymous.ru
Сообщения: 614
Сообщение
anonymous.ru » 07.05.2011 21:33
Проблема с lseek проявляется в 10.7.0
Странная работа mv была в дрогой системе, версию узнаю в пятницу.
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Сообщение
diesel » 07.05.2011 22:33
anonymous.ru писал(а): ↑ 07.05.2011 21:33
Проблема с lseek проявляется в 10.7.0
10.7.0 - это Lion, она не вышла еще.
Lan4
Сообщения: 339
Статус: hikki
ОС: Arch
Сообщение
Lan4 » 07.05.2011 22:43
diesel писал(а): ↑ 07.05.2011 22:33
10.7.0 - это Lion, она не вышла еще.
Имелось в виду ядро 10.7.0, т.е. мак 10.6.7
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Сообщение
diesel » 07.05.2011 22:48
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
Сообщение
anonymous.ru » 08.05.2011 11:20
Спасибо.
Главное я понял, что проблема не носит системный характер.
К сожалению этот конкретный Мак я теперь увижу только недели через три.
diesel писал(а): ↑ 07.05.2011 22:33
10.7.0 - это Lion, она не вышла еще.
Ну, человек как раз сказал, что у него какая-то бета версия,
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Сообщение
diesel » 08.05.2011 15:34
anonymous.ru писал(а): ↑ 08.05.2011 11:20
diesel писал(а): ↑ 07.05.2011 22:33
10.7.0 - это Lion, она не вышла еще.
Ну, человек как раз сказал, что у него какая-то бета версия,
понятно, я себе утаскивал образы, но так и не поставил, возможно стоит именно в этой версии ознакомится с man соотвествующих функций, возможно там это поведение отражено(ну или если нет - тогда действительно баг).