Трябваше да превключа някакъв функционален c код от 32-битова машина на 64-битова машина. Намерих някои полезни връзки за това как да направя това (напр. Преобразуване на 32-битово приложение в 64-битово приложение в C) и досега съм заменил всички случаи на "long" с "int", но все още срещам проблеми.
Програмата се компилира, но когато я стартирам, засяда. Когато го затворя принудително, получавам Seg. грешка. Намерих точния ред, където програмата се затваря (т.е. стига до 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