0
код:записи() не писать на устройство
#include <fcntl.h>
#include <linux/fs.h>
#include <stdio.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/time.h>
void write_zero(char * file, unsigned long bytes)
{
printf("Zeroing %s\n", file);
unsigned int wrote = 0, total = 0;
int fd, i, buf;
char obj = 0x00;
fd = open(file, O_RDWR, DEFFILEMODE);
lseek(fd, 0, SEEK_SET);
write(fd, &obj, bytes);
}
int main(int argc, char * * argv)
{
int fd;
unsigned long blocks = 0;
char check = 0x0;
fd = open(argv[1], O_RDONLY);
ioctl(fd, BLKGETSIZE, &blocks);
close(fd);
printf("Blocks: %lu\tBytes: %lu\tGB: %.2f\n",
blocks, blocks * 512, (double)blocks * 512.0/(1024 * 1024 * 1024));
do
{
printf("Write 0x0 to %s? [y/N] ", argv[1]);
fflush(stdout);
}
while (scanf("%c", &check) < 1);
if (check == 'y')
{
write_zero(argv[1], blocks * 512);
}
}
я не получаю ничего на самом деле записывается в устройство .. Я скопировал мою открытую линию от «дд» исходного кода, думая, может быть, он не был открыт сразу. dd может обнулить устройство, но этой программы нет. Есть идеи?
Вы не проверяете возвращаемые значения ваших вызовов 'open' и' write'. Вы должны проверить возвращаемые значения, чтобы лучше понять, что происходит в вашем коде. – mathematician1975
Я, я делаю это с помощью gdb. У меня было это сохранение переменной до – phyrrus9
@ phyrrus9 Можете ли вы показать, как это называется и что он отображает в качестве вывода? –