본문 바로가기
코스웨어/10년 시스템제어

[시스템제어] 5월 12일 수 (30번 한정희)

by 알 수 없는 사용자 2010. 5. 13.
728x90
반응형




=========================================================================================================================================

타이머 ( 시계 )



=========================================================================================================================================


2개의 타이머이용




=========================================================================================================================================


백그라운드작업 ( 2가지의 일 동시에 -> 무한루프안걸리게끔 )




========================================================================================================================================


콜백함수




=========================================================================================================================================


일회용타이머




=========================================================================================================================================


API 동적할당하기




=========================================================================================================================================


작업영역 ( 창이 변경시 )



=========================================================================================================================================

콘솔창에서 FTP사용

입력 : ftp 주소

파일보내기 : put 파일명

파일받기    : get 파일명

여러파일    : mget *.zip (확장자가 zip인 파일모두 받아온다.)  
                  이때 파일마다 물어보는데 ( yes / no ) prompt 입력시 해결된다.

bin : 텍스트파일을 binary모드로 가져온다.

? : 명령어 목록 쫙~

접종시 : Ctrl + D       (도스는 quit)

=========================================================================================================================================

HEX 뷰어

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define MAX_FILE_SIZE 1400

void HexaView(void *vp, int iSize) //불러온파일값들을 16진수로 바꿔줌
{
 int iCnt;

 if(0 == vp)
 {
  return;
 }
 if(MAX_FILE_SIZE < iSize)
 {
  iSize = MAX_FILE_SIZE;
 }
 
 printf(" _ADDRESS_ ");
 for(iCnt=0;16>iCnt;++iCnt)
 {
  printf("%02X ", iCnt);
 }
 putchar(' ');
 for(iCnt=0;16>iCnt;++iCnt)
 {
  printf("%X", iCnt);
 }
 putchar('\n');
 for(iCnt=0; ((16*4)+11)>iCnt; ++iCnt)
 {
  putchar('-');
 }
 putchar('\n');

 

 iCnt = 0;

 printf("0x%08X ", iCnt); 

 while(16 > iCnt)  //hexa
 {
  printf("%02X ", *(((unsigned char*)vp) + iCnt) );
  ++iCnt;
 }
 putchar(' ');
 
 for(iCnt=iCnt-16; 16>iCnt; ++iCnt) // 코드영역(소스)  
 {
  if((32 > (*(((unsigned char*)vp) + iCnt))) ||
   (127 < (*(((unsigned char*)vp) + iCnt))))
  {
   putchar ('.');     // text모드 = enter키를 1바이트로본다. 
                          // binary모드 = 2바이트로본다.
  } 

  else
  { 
   printf("%c", *(((unsigned char*)vp) + iCnt) );
  }
 }
 putchar('\n');
//여기까지 파일의 16번째값까지 변환되서 출력됨
    iSize(총크기), 반복문이용해서 파일끝까지 변환되게 바꿔야함.

 }

int main(int iArg, char *capArg[])   // 파일을 불러오는쪽
{
 int iFileDS;
 int iRet;
 struct stat stFileInfo;
 unsigned char *ucpData = 0;


 if(2 != iArg)
 {
  printf("error..\n");
  return 0;
 }

 iFileDS = open(capArg[1], O_RDONLY); 
// O_RDONLY | 바이너리모드로 열게해주는명령어와
//정의된 헤더파일을 찾아서 include해야함

 if(0 > iFileDS)
 {
  printf("can't file [%s]file .\n", capArg[1]);
  return 0;
 }
 iRet = fstat(iFileDS, &stFileInfo);

 if(0 > iRet)
 {
  printf("can't read file information.");
  close(iFileDS);
  return 0;  
 }
 else
 {
  iRet=stFileInfo.st_size;
 }

 if(MAX_FILE_SIZE < iRet)
 {
  iRet=MAX_FILE_SIZE;
 }
 ucpData =  (unsigned char*)malloc(iRet);

 if(0 == ucpData)
 {
  printf("memory space is not enough\n");
  close(iFileDS);
  return 0;
 } 

 iRet = read(iFileDS,ucpData,iRet);

 if(0 > iRet)
 {
  printf("can't read file.\n");
  close(iFileDS);
  free(ucpData);
  return 0;
 }


 HexaView ( ucpData , iRet);

 free(ucpData);

 return 0;
}

728x90