gpt4 book ai didi

linux - C代码中的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:27:18 24 4
gpt4 key购买 nike

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

#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);
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);
}

我想知道为什么在两个不同的文件中编写相同的代码时表现不同。这可能是什么原因?

最佳答案

问题来了,忘记初始化 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);
}

关于linux - C代码中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44256334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com