当前位置:  技术问答>linux和unix

请教下一个简单的linux程序

    来源: 互联网  发布时间:2016-02-14

    本文导语:  下面这个liunx程序我能编译通过。。但是在运行的时候出现了段错误。请问下是哪里出了问题了啊? 请大家给我说哈啊。。谢谢了。。。 #include #include #include #include #include #include #define BUFFER_SIZE 1024            ...

下面这个liunx程序我能编译通过。。但是在运行的时候出现了段错误。请问下是哪里出了问题了啊?

请大家给我说哈啊。。谢谢了。。。
#include
#include
#include
#include
#include
#include
#define BUFFER_SIZE 1024
                                                                                
int copy(int argc,char **argv)
   {
    int from_fd,to_fd;                                                     
    int bytes_read,bytes_write;
    char buffer[BUFFER_SIZE];
    char *ptr;
    if(argc!=3)
    {
        fprintf(stderr,"Usage:%s fromfiletofilena",argv[0]);
        exit(1);
   }
 if((from_fd=open(argv[1],O_RDONLY))==-1)
    {
      perror("open error!");
  exit(1);
    }
if((to_fd=open(argv[2],O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR))==-1)
    {
       perror("open error!");
        exit(1);
    }
while(bytes_read=read(from_fd,buffer,BUFFER_SIZE))
                                                                                
    {
   if((bytes_read==-1)&&(errno!=EINTR)) break;
  else if(bytes_read>0)
   {
        ptr=buffer;
while(bytes_write=write(to_fd,ptr,bytes_read))
{
if((bytes_write==-1)&&(errno!=EINTR))break;
                else if(bytes_write==bytes_read)
                 break;
                else if(bytes_write>0)
                {
                    ptr+=bytes_write;
                    bytes_read-=bytes_write;
}
            }
            if(bytes_write==-1)break;
}
}
                                                                                
}
                                                                                
int sum()
{
int i, ji=1;
for(i=1;i0)
   {
        ptr=buffer;
        while(bytes_write=write(to_fd,ptr,bytes_read))   //如果想简单修改,此处的while换成if就可以了。
          {
            if((bytes_write==-1)&&(errno!=EINTR))break;
            else if(bytes_write==bytes_read)
                 break;
            else if(bytes_write >0)
               {
                  ptr+=bytes_write;
                  bytes_read-=bytes_write;
               }
           }
            if(bytes_write==-1)break;
      } 
      
      
      
 你这样写能不出错?读一次,一直不停的写,ptr指针往后移,超过了buf的长度,溢出。
 
 再说,你的copy是干什么用的?如果仅仅是拷贝一个文件,不用这样写吧。

|
段错误一般都是越界了。

    
 
 

您可能感兴趣的文章:

  • 在linux下面怎么安程序啊?我刚裝了一个 linux,下了一个迅雷安装程序,可是不知道怎么安装啊?真心请教。
  • 菜鸟请教,应用程序如何判断驱动程序已经挂载成功
  • 请教!Linux系统C开发的程序,为什么我的程序运行时内存持续增长,程序退出后内存也没有降低?
  • 请教高手,如何在java中调用其他应用程序(该程序主要进行数据库操作)
  • 请教一下在驱动里怎么调用应用程序
  • 请教一个古老的DOS程序——IMG的用法
  • 请教各位大大 怎样编写LINUX触摸屏的驱动程序?
  • 请教!关于linux字符驱动程序
  • 请教,在jcreator下面如何使程序单步执行?多谢!
  • 请教:用jbuilder7编写程序时,光标显示不正确,请问怎样解决?
  • 请教一下程序员考试的情况
  • 请教高手关于c程序core问题
  • 请教,请教,,,一定要看!!一定要看!! iis7站长之家
  • 请教高手:如何用gnome/gtk编写托盘程序
  • 请教怎么在程序中转换用户?
  • 请教shell脚本启动程序
  • 请教,自编程序如何控制mplayer播放器
  • 请教cgi程序不能使用popen的问题
  • 请教多线程程序的内存占用问题
  • 请教高手一个简单问题:给定一个文件名,如何去查找该文件正在被几个程序使用,并怎么样才可以切断这个文件与正在打开该文件的程序之间的
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 向linux达人请教linux下5.1声道测试工具
  • 请教一下,如果想在linux下开发java,选哪个版本的linux好一点
  • 小弟想请教,如果现在不像装linux了怎样把linux的分区改回ntfs格式的?
  • 请教:linux启动盘和一张盘的linux有何区别?
  • 请教linux高手,在Linux
  • 初次接触linux,关于linux 用户权限问题请教!
  • 请教linux 下的adsl拨号问题.
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教,如何用虚拟订机安装liux
  • 请教一个opengl的问题
  • 请教unix常用命令命令问题
  • 请教两个shell
  • 请教semop()函数的用法、含义
  • 请教个,关于C编译器参数CFLAGS的问题(真诚请教,分不够了全部送出)
  • 请问如何在Redhat7.1下安装Ftp服务,如何开启Ftp帐号????请教!!!急急急急急急


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3