QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 902|回复: 1

求助:我下面的程序运行时为什么会出现这样的错误,谢谢!

[复制链接]
发表于 2006-7-10 16:56:12 | 显示全部楼层 |阅读模式
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>

int write_buffer(int fd, const void *buf, int count);

int outfile;
int main(void)
{
            char *mapped;
            char *ptr;

            if(outfile=open("test.dat", O_RDWR|O_CREAT|O_TRUNC, 0640)==-1)
            {
                printf("COULDN'T OPEN THIS FILE!\n");
                exit(254);
            }

            lseek(outfile,1000,SEEK_SET);
            if(write(outfile,"\0",1)==-1)
        {
                printf("ERROR, WRITE FAILED!\n");
                exit(254);
            }
        mapped=mmap(NULL, 1000, PROT_READ|PROT_WRITE,MAP_SHARED, outfile, 0);
        if(!mapped)
                    printf("ERROR, MMAP FAILED!\n");

        ptr=mapped;
        printf("PLEASE ENTER A NUMBER:");
        fgets(mapped, 80, stdin);

        ptr=mapped;
        sprintf(ptr,"YOUR NUMBER TIMES TWO IS:%d.\n",atoi(mapped)*2);
        printf("YOUR NUMBER TIMES TWO IS:%d\n",atoi(mapped)*2);

        msync(mapped, 1000, MS_SYNC);
        munmap(mapped,1000);

        if(!close(outfile))
        {
                printf("POSSIBLY SERIOUS ERROR,CLOSE FILE FAILED");
                exit(254);
            }
        return 0;
}


int write_buffer(int fd, const void *buf, int count)
{
            const void *pts=buf;
            int status=0, n;

            if(count<0)
                return(-1);
            while(status!=count)
            {
                if(n=write(outfile, "\0",1)==-1)
                {
                        printf("ERROR, WRITE FAILED!\n");
                        exit(254);
                }
                if(n<0)
                            return(n);
                status+=n;
            }
        return(status);
}


运行时:
[root@localhost linuxc]# ./a9
PLEASE ENTER A NUMBER:1
段错误


请教:为什么是段错误呢?

谢谢!
发表于 2006-7-12 18:12:47 | 显示全部楼层
用gcc编译了 吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 12:33 , Processed in 0.036178 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表