C代码中的分段错误

时间:2017-05-30 06:39:14

标签: linux permissions memory segmentation-fault gpio

昨天我写了一个-F,工作正常。现在我想对文件进行一些更改,所以我只是将这段代码复制到一个新文件中。编译新文件很好,但是当我尝试运行我的可执行文件时,我得到了C code。但是我之前的代码正在运行。最初我认为这是一个权限问题所以我使用segmentation fault更改了可执行文件的权限。但我仍然得到chmod 777。这是我的代码: -

segmentation fault

我想知道为什么当用两个不同的文件编写时,相同代码的行为会有所不同。这可能是什么原因?

1 个答案:

答案 0 :(得分:0)

遇到问题,忘记初始化ioval。正确的代码在这里: -

#include <stdio.h>
#include <time.h>
void pauseSec(int sec);
int main() {
        FILE *io,*iodir,*ioval,*iodir_S,*ioval_S,*io_S,*iodir_P,*ioval_P,*io_P;

        io = fopen("/sys/class/gpio/export", "w");
        fseek(io,0,SEEK_SET);
        fprintf(io,"%d",15);
        fflush(io);

        iodir = fopen("/sys/class/gpio/gpio15/direction", "w");
        fseek(iodir,0,SEEK_SET);
        fprintf(iodir,"out");
        fflush(iodir);

        ioval = fopen("/sys/class/gpio/gpio15/value", "w");

        while(1)
        {
                fprintf(ioval,"%d",1);
                fflush(ioval);
                pauseSec(1);
                fprintf(ioval,"%d",0);
                fflush(ioval);
                pauseSec(1);
        }
        fclose(io);
        fclose(iodir);
        fclose(ioval);
        return 0;
}
void pauseSec(int sec) {
        time_t now,later;
        now = time(NULL);
        later = time(NULL);
        while((later - now) < (double)sec)
        later = time(NULL);
}