Несколько ошибок:
dskr = open( name, O_CREAT );
Флаги для open()
должны включать один из O_RDONLY
, O_WRONLY
или O_RDWR
.Таким образом, вы, вероятно, хотите O_WRONLY | O_CREAT
.
lseek( d, 1, SEEK_SET );
Смещение lseek
в байтах.Если вы хотите найти 1 мегабайт, вы должны преобразовать это в байты.Удобный и читаемый способ - написать 1024*1024
.
Кроме того, вам следует проверить возвращаемое значение lseek
и сообщить о любых ошибках соответствующим образом.
f = write( d, buf, 1);
Вы никогда не инициализировались buf[0]
, поэтому вы пишете один байт мусора.(В любом случае, нет смысла иметь buf
длиной 20 байт, если вы никогда не собираетесь использовать другие 19.)
Кроме того, вам следует проверить возвращаемое значение write
и обработать ошибки илишорт пишет соответственно.