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

open一个程序写入缓存,open创建新程序,写入,结果无法运行。

    来源: 互联网  发布时间:2017-04-13

    本文导语:  本帖最后由 ZDW86 于 2013-05-26 22:19:09 编辑 /*open一个程序写入缓存,open创建新程序,写入,结果无法运行。*/ /*代码如下,坐等高手解答*/ /*helloword 小程序而已,只有4kb多一些*/ #include  #include  #include  #include  #include  ...

本帖最后由 ZDW86 于 2013-05-26 22:19:09 编辑
/*open一个程序写入缓存,open创建新程序,写入,结果无法运行。*/
/*代码如下,坐等高手解答*/
/*helloword 小程序而已,只有4kb多一些*/

#include 
#include 
#include 
#include 
#include 
#include 
#include 

unsigned int cal_crc(unsigned char *ptr, unsigned int len);

void main()
{
unsigned int nCal;
unsigned int nCal2;
int FD, FDNEWDATA,FDNEWDATB;
int FDsize;
int nNumber;
char buf[6] = {'0'};
char cLastOne;
char *pcEatbuf = (char*)malloc(3000);
char *pcEatbuf2;
FD = open("./helloworld",O_RDONLY);
FDsize = lseek(FD, 0, SEEK_END);


pcEatbuf = (char*)malloc(FDsize);
lseek(FD, 0, SEEK_SET);
nNumber =read(FD, pcEatbuf, 3000);

cLastOne = (char)*(pcEatbuf+FDsize-1);

pcEatbuf2 = (char*)malloc(FDsize - 3000);

read(FD, pcEatbuf, 3000);

lseek(FD, 3000, SEEK_SET);

read(FD, pcEatbuf2, FDsize - 3000);

close(FD);

//////////////////////////////////////////////////////////
nCal = cal_crc(pcEatbuf,4831);
printf("pcABCD=%dn",nCal);

nCal = FDsize - 3000;
printf("FDsize=%dn",FDsize);

nCal2 = cal_crc(pcEatbuf2,1831);

printf("nCal2=%dn",nCal2);

///////////////////////////////////////////////////////////////

FDNEWDATA = open("./hellocopy2",O_WRONLY|O_CREAT,0777);
write(FDNEWDATA, pcEatbuf, 3000);
close(FDNEWDATA);

FDNEWDATB = open("./hellocopy",O_WRONLY);
lseek(FD, 3000, SEEK_SET);
write(FDNEWDATB, pcEatbuf2, FDsize - 3000);
close(FDNEWDATB);

}



unsigned int cal_crc(unsigned char *ptr, unsigned int len) { 
  unsigned char i; 
  unsigned int crc=0; 
  while(len--!=0) { 
    for(i=0x80; i!=0; i/=2) { 
      if((crc&0x8000)!=0) {crc*=2; crc^=0x1021;} /* 余式CRC乘以2再求CRC        */ 
        else crc*=2; 
if((*ptr&i)!=0) crc^=0x1021;             /* 再加上本位的CRC */ 
    } 
    ptr++; 
  } 
  return(crc); 


|
大哥./helloworld这个是什么设备啊,不要说是二进制可执行文件哦!

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.awt枚举desktop.action的类成员方法: open定义及介绍
  • 关于can总线open()系统调用函数与QDialog中的open()冲突
  • java命名空间javax.swing类jfilechooser的类成员方法: open_dialog定义及介绍
  • 先装open Solaris再装win7,怎么进入open?
  • java命名空间javax.sound.sampled类lineevent.type的类成员方法: open定义及介绍
  • man open正常,打开的是1部分,但man 2 open报错,报错信息如下
  • java命名空间javax.management.remote类jmxconnectionnotification的类成员方法: opened定义及介绍
  • 为什么这个open调用一定会失败?open("/proc/hide-252",O_RDWR|O_CREAT,0);
  • java命名空间java.util.logging类errormanager的类成员方法: open_failure定义及介绍
  • I open grub.conf in Nautilus , but it doesn't allow me to edit the file . How to open it in the editable mode ?
  • C++ I/O 成员 open():创建一个输入流
  • Open Watcom
  • java命名空间java.nio.channels类pipe的类成员方法: open定义及介绍
  • Open函数的inode疑问
  • java命名空间javax.print.attribute.standard类printerstatereason的类成员方法: interlock_open定义及介绍
  • 邮件客户端 Open-jACOB eMail
  • java命名空间javax.print.attribute.standard类printerstatereason的类成员方法: door_open定义及介绍
  • 开放下载管理器 Open Download Manager
  • java命名空间javax.management类jmx的类成员方法: open_type_field定义及介绍
  • open-iscsi的移植。。。有人做过吗?
  • java命名空间javax.print.attribute.standard类printerstatereason的类成员方法: cover_open定义及介绍
  • 开源建模工具 Open ModelSphere


  • 站内导航:


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

    ©2012-2021,