달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'develop life/c'에 해당되는 글 5건

  1. 2010.04.20 리눅스 시스템 날짜와 메일링 시간이 다를때 2
  2. 2010.02.16 리눅스 CVS 계정 생성 방법
  3. 2009.10.09 Linux keygen 사용법
  4. 2009.08.17 single linked list
  5. 2009.08.07 c언어 오류 확인
ln -sf ../usr/share/zoneinfo/ROK /etc/localtime


일케 로컬 타임시간을 엎어치고

로컬 시간을 조정해줍니다.

네 그렇습니다.

Posted by 무심법
|

# cvs 계정 생성 ( CVS 서버 실행 root 계정 )
1. /home 에 mkdir [ID]
2. useradd [ID] -d /home/[ID] -g CVS ID
3. passwd [ID] (pass 2회 입력)
4. vi /etc/group     가장 하단 cvs : 계정추가
5. cd /[ID]

 - 아래는 정상일때 해야할 필요 없음 자동 생성
6. cp 다른계정의[ID] /.bashrc ./
7. cp 다른계정의[ID] /.vimInfo ./
 - 복사한 파일의 내용 추가되는 아이디로 수정

# cvs 계정 생성 ( 소스 작업 서버 )
1. useradd [ID] -d /[ID]
2. cvs /[ID]
3. vi /.bashrc 에 cvs서버의 해당 ID 디렉토리의 vi .bashrc 의 CVSROOT 내용 추가
4. cvs login [ID]
   cvspass 파일이 정상 생성되었는지 확인
5. 클라이언트 컴퓨터의 루트 계정으로 해당ID 비번 서버와 같이 셋팅
Posted by 무심법
|

개인 키를 내 작업 컴퓨터에 저장하고 서버컴퓨터에 동일 계정으로 접속할때

다시 패스워드 입력을 묻지 않는다.
----------------------------------------------------------------------------------


1. 내 작업 컴퓨터 에서 실행

[linux@linux ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jinynet9/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):                             ==>
Enter same passphrase again:                                            ==>
Your identification has been saved in /home/jinynet9/.ssh/id_rsa.       ==>
Your public key has been saved in /home/jinynet9/.ssh/id_rsa.pub.       ==>
The key fingerprint is:
63:42:23:50:38:08:e9:35:28:90:79:1d:00:10:b0:d3 linux@linux


 "-t" 옵션을 줄수도 있지만 먼지 모른다.


 2. 서버에서 실행

 [jinynet9@Jinux ~]$ scp .ssh/id_rsa.pub 165.133.13.199:~/.ssh/authorized_keys
linux@아이피">jdkim@아이피's password: 입력

 100%  224     0.2KB/s   00:00


Posted by 무심법
|

single linked list

develop life/c 2009. 8. 17. 10:41

작성자 : 김정덕


#include <stdio.h>
#include <malloc.h>
#include <unistd.h>
#include <string.h>
#include <sys/time.h>
#include <errno.h>
#include <stdlib.h>

#define DUP_METER   1000000

typedef int             INT;
typedef unsigned int    UINT;
typedef long long       INT64;
typedef time_t          TIME_T;

typedef unsigned long long TIME_64;
typedef unsigned long long UINT64;


unsigned long long timestamp( void )
{
    struct timeval  tv;
    unsigned long long ullRetval;

    memset( &tv, 0, sizeof( struct timeval ) );
    gettimeofday( &tv, NULL );
    ullRetval = ( tv.tv_sec * DUP_METER ) + tv.tv_usec;

    return ullRetval;
}

typedef struct _st_linkdata
{
    INT64   llkey;
    char    body[1024];
//  int     d_num;
    struct _st_linkdata *next;

}st_linkdata, *pst_linkdata;

pst_linkdata pnode; //  전역 구조체로 선언
pst_linkdata ptmp;

int main (int argc, char *argv[])
{
    int ch1; //첫케이스문 사용 변수

    while (1)
    {
        fflush(stdin);//  입출력 버퍼 초기화

        print_Menu(); // 메뉴 함수  호출
        scanf("%d", &ch1);

       if (ch1 < 0 || ch1 > 5) 지정 값 이외의 수가 입력 되었을때 에러
       {
            fprintf(stderr, "SCANF ERROR : %d\n", ch1);
            continue;
       }
      switch(ch1){ // 스위치 문 실행

            case 1:
                makeNew_link();//데이터 생성 함수
                print_list();// 화면 결과 출력 함수
            break;

            case 2:
                search_link();// 서치
            break;

            case 3:
                free_link();// 데이터 삭제 함수
                print_list();// 화면 결과 출력 함수
            break;

            case 4:
                print_list(); // 화면 결과 출력 함수
            break;

            case 5:
                return 0;
            break;
        }
    }
    return 0;
}

 

int makeNew_link()
{
    int dt;// 실행문에서 데이터 값을 직접 입력 받기 위해 사용 하였으나 삭제 비실행 변수
    fprintf(stdout,  "###CREATE NEW DATA### \n" , NULL);
    pst_linkdata pdata;

    pdata = (pst_linkdata)malloc(sizeof(st_linkdata));// 메모리 할당 부분
    pdata->next  = NULL;// 할당된 pdata의 다음 가르켜야 할 구조체를 를 NULL표시
    pdata->llkey = timestamp();// 키값을 타임 스탬프로 고유 값 입력

 

    if (pdata == NULL) // 메모리 할당 실패시 에러
    {
        fprintf(stdout, "MALLOC ERROR (%d:%s)\n", errno, strerror(errno));
        return -1;
    }
    ptmp = pnode;// 조작을 위해 pnode 첫번째를 임시에 저장
    sleep(1);// 그냥 그럴싸 하게 보일려고 슬립 삽입
    fprintf(stdout,  "###   COMPLETE   ### \n"  , NULL);
    sleep(1);
    while(1)// 무한루프를 위해 조건을 1 로 하고 시작
    {
        if(!ptmp)// ptmp가 처음 일 경우 pnode 에 생성된 pdata 저장
        {
            pnode = pdata;
        }
        else
        {
            for(; ptmp->next; ptmp = ptmp->next);// 임시에서 다음 까지 계속 돌며 확인
            {
                if(ptmp->llkey == pdata->llkey)// 키값이 같으면 에러
                {
                    fprintf(stdout, "SAME DATA ERROR!!!!! \n", NULL);
                    return 0;
                }

                ptmp->next = pdata;// 같은 것이 없다면 임시의 다음은 pdata로 지정
            }
        }
        return 0;
    }
    return 0;
}

 

 

int search_link()
{
    INT64 dt;// 키값이 되는 변수 입력 받기 위해 사용
    int j=0; // 에러 처리를 위해 삽입된 변수
    fprintf(stdout,  "###Insert Data For Search: \n"    , NULL);
    fflush(stdin);// insert buffer init// 입력 버퍼 초기화
    scanf("%llx", &dt);

    ptmp = pnode; // 조작을 위해 임시에 저장

    if(pnode == NULL)// 데이터가 없다면 에러
    {
        fprintf(stdout, "NON DATA \n", NULL);

        return 0;
    }

    for(; ptmp != NULL; ptmp = ptmp->next)// 임시에서 다음으로 계속 돈다
    {
        if(ptmp->llkey == dt)// 키값이 입력값과 같다면
        {   j=1; // 동일 키값이 있다면 j는 1로 바뀐다.
            fprintf(stdout, "FIND DATA llkey -> %llx\n",  ptmp->llkey);// 키를 찾았으므로 출력
        }
    }
    if(j == 0) // 아까 선언 했던 것이 키값이 없으면 그대로 0 이다. 에러 화면
    {
        fprintf(stdout, "HAVE NOT PLACE !!!!", NULL);
        return 0;
    }
        return 0;
}

 


int free_link()// 삭제 함수
{
    INT64 dt;// 입력 을 받기 위해 선언 된 변수
    fprintf(stdout,  "###Insert Data For Datafree: \n"  , NULL);
    fflush(stdin);// insert buffer init// 입력 버퍼 초기화
    scanf("%llx", &dt);

    pst_linkdata pdel;// 삭제시만 사용 되는 임시 구조체
    ptmp = pnode;// 조작을 위해 pnode 를 임시에 저장

    if(pnode == NULL)// pnode 가 없으면 당연히 에러
    {
        fprintf(stdout, "NULL DATA \n", NULL);
        return 0;
    }
    if(pnode->llkey == dt)// 처음 값인pnode 가 키값이 동일 하다면 삭제
    {
        fprintf(stdout, "llkey :  %llx\n", dt);
        fprintf(stdout, "llkey :  %llx\n", pnode->llkey);
        fprintf(stdout, "firt delete\n", NULL);
        pnode = ptmp->next;// pnode는 pnode의 다음 값이 된다.
        free(ptmp); // 그리고 임시에 저장된 pnode 를 삭제 한다.
        return 0;
    }

    pdel = ptmp;// 처음이 아닐경우 사용 되는 임시 구조체에 ptmp 를 저장

    for(; ptmp != NULL; pdel=ptmp, ptmp = ptmp->next)// ptmp 가 NULL아닌 곳에서 부터  next 로 증가 pdel에 ptmp를 계속 받으면서 이동이 중요.
    {
        if(ptmp->llkey == dt)// 동일값 찾은 상태
        {
            fprintf(stdout, "llkey :  %llx\n", dt);
            fprintf(stdout, "llkey :  %llx\n", pnode->llkey);
            fprintf(stdout, "delete complete\n", NULL);

            pdel->next = ptmp->next;// 서치된 임시구조체의 next를 pdel 에 연결하고 ptmp를 삭제 
            free(ptmp);//ptmp삭제
            return 0;
        }

    }
        return 0;
}

int print_list()
{
    int i=0;
    ptmp = pnode;

    printf("RESULT ----\n");
    for(; ptmp != NULL; ptmp = ptmp->next)
    {   i++;
        fprintf(stdout,"No.%d  llKey : %llx\n", i, ptmp->llkey);
        fprintf(stdout,"-----------------------------------\n", NULL);
    }
    fprintf(stdout, "TOTAL : %d DATA SEARCH\n", i);
    return 0;
}
int print_Menu()
{
    fprintf(stdout, "\n-----LINKED LIST TEST-----\n\n", NULL);
    fprintf(stdout, "1.MAKE NEW LINKED DATA\n", NULL);
    fprintf(stdout, "2.SEARCH DATA\n", NULL);
    fprintf(stdout, "3.FREE DATA(DELETE)\n", NULL);
    fprintf(stdout, "4.PRINT LIST\n", NULL);
    fprintf(stdout, "5.FINISH\n", NULL);
    fprintf(stdout, "WHAT DO U WANT?(1~4) : ", NULL);
    return 0;
}


 

Posted by 무심법
|
작성 : 090806

오류 확인

[jdkim@...]$ ulimit -c unlimited
일케 해제하고 컴파일 하면

세그멘테이션 등의 오류가 파일의 오류위치 정보등 상세하게 저장된다.

보는 방법은
gdb JDK(filename) core.26460(err no)

ex) [jdkim@...]$ file JDK(filename) core.801021(err no)
gdb 진입후
'where' 명령을 입력하면 에러줄 이동

끝낼때는 quit 입력




코어 파일 일곽 삭제
rm core.*
rm core.25612






//에러 위치 구문에 직접 라인이 어디 까지 출력되는지 확인
 fprintf(stdout, "TEST : %d\n", __LINE__);



Posted by 무심법
|