Мне пришлось переключить некоторый функциональный код c с 32-битной машины на 64-битную. Я нашел несколько полезных ссылок о том, как это сделать (например, Преобразование 32-битного приложения в 64-битное приложение на C) и до сих пор я заменил все экземпляры long на int, но я все еще сталкиваюсь с проблемами.
Программа компилируется, но когда я ее запускаю, она зависает. Когда я заставляю его закрыться, я получаю сегмент. вина. Я нашел точную строку, в которой программа зависает (т.е. она попадает в SheilaTestPoint1, но не в SheilaTestPoint2).
fprintf(stderr, "SheilaTestPoint1");
check = read(fpheading, &header, 8);
fprintf(stderr, "SheilaTestPoint2");
Есть предложения о том, как действовать?
Спасибо!!
header
, но это могло измениться. Вы должны сделатьsizeof(header)
. Но тогда, если фактический файл содержит 8 байтов, вам следует изменить определениеheader
, чтобы оно было ровно 8 байтов. - person rodrigo   schedule 13.02.2014read
. Это POSIXread(2)
?fpheading
выглядит какFILE*
, ноopen(2)
принимает файловый дескрипторint
. Разве вы не получили быEFAULT
, а не segfault? - person Mark Nunberg   schedule 13.02.2014