易截截图软件、单文件、免安装、纯绿色、仅160KB

linux 下c 程序 段错误 分析


linux 下c 程序 段错误 分析
(2008-12-31 16:50:57)
var $tag='it';
var $tag_code='2cec03ae0a5b0d224bb35c9b79dd54c7';
标签:it
 
分类:C/C++
fopen("/var/spool/cron/tmp","w+");
/////////////////////////////////////////
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
int ret=-1;
printf("***************************************
delPolicy 
***************************************************\n");
FILE *f;
f=fopen("var/spool/cron/tmp","w");
if(f==NULL)
{
  printf("open tmp failed!\n");
  fclose(f);
  return -1;
}
printf("open two files
successfully!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
fclose(f);
ret=0;
printf("***************************************
delPolicy 
***************************************************\n");
return ret;
}
出现段错误:
 原因:1:"/var/spool/cron/tmp"错写成"var/spool/cron/tmp"
     
2:文件名不能为tmp关键字,可为mytmp
产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址.
一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,它是一个48位的寄存器,
其中的32位是保存由它指向的gdt表,后13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,
指向的gdt是由以64位为一个单位的表,在这张表中就保存着程序运行的代码段以及数据段的起始地址,以及与此相应的段限和页面交换,
还有程序运行级别还有内存粒度等等的信息。一旦一个程序发生了越界访问,cpu就会产生相应的异常保护,于是segmentation
fault就出现了.
在编程中以下几类做法容易导致段错误,基本是是错误地使用指针引起的
1)访问系统数据区,尤其是往 
系统保护的内存地址写数据最常见就是给一个指针以0地址
2)内存越界(数组越界,变量类型不一致等) 访问


相关文档:

Linux启动级别

1、LINUX系统启动级别
查看/etc/inittab文件,其主要内容如下:

0
 
-
 halt (Do NOT set initdefault to 
this


1
 
-
 Single user mode 

2
 
-
 Multiuser, without NFS  ......

Linux学习笔记


远程登入:ssh che@192.168.1.111
1.添加用户:useradd cheyanbing
2.修改密码:passwd cheyanbing
3.mkdir /cd /cd .. /cd -/
4.回到用户主目录:cd / cd ~
5.cd /home/he
6.mkdir -p www/pro
远程拷贝
  scp che@192.168.1.111:/home/che/test
che@192.168.1.133:/home/che/
    &n ......

Linux编辑器vi使用方法详细介绍

vi编辑器是所有Unix及Linux系统下标准的编辑器

它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相
同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅 ......

linux系统下文件的上传与下载命令


linux
系统下可以直接从客户端上传文件到服务器端,命令格式:
scp files user@server:filepath
解释:
files 待上传的文件,可以有多个,多个文件之间用空格隔开。也可以用*.filetype上传某个类型的全部文件
user 服务端登录用户名
server 服务器名(IP或域名)
filepath 上传到服务器的目标路径(这里注意此用户 ......

linux 命令 cd

1. cd -> 返回进入此目录之前所在的目录:cd -
2. 上一条命令 ->
                !! 全部的上一条命令
                !* 上一条命令的全部参数
      & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号