반응형
아래 예제는 대문자에서 소문자로 변화해주는 예제 입니다.

ASCII Code표의 대문사 소문자 값의 차이를 이용해 구현하는 것으로

대문자는 ASCII 코드 65에서 90번 사이의 값을 갖습니다.

아스키코드표
http://ko.wikipedia.org/wiki/Ascii

char *small_letter(char *input){
  char *temp = (char*)malloc(sizeof(char)*256);
  for(unsigned int i = 0 ;; i++){
      if((input[i]>=65) && (input[i] <= 90)){
          temp[i] = (input[i] + 32);
      }
      else {
          temp[i] = input[i];
      }
      if(input[i] == '\0') break;
      if(input[i] == '\n') break;
  }
  return temp;
}

반응형
반응형
scandir을 이용하여, 파일리스트와 폴더리스트를 불러오는 방법이다

필수적으로,

참고 Link
fstat : http://codewiki.wikidot.com/c:system-calls:fstat
s_islnk: http://www.freepascal.org/docs-html/rtl/oldlinux/s_islnk.html

요구 include Files
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>

long_t getFileList(const str_t dir, str_t*& list)
{
     /* Scan directory */
     struct dirent** pp_item;
     struct stat fstat;

// scandir 함수를 이요해서 파일과 디렉토리 내용을 가져온다
     long_t item_cnt = scandir(".", &pp_item, NULL, alphasort);

     /* Count files */
     long_t file_cnt = 0;
//파일 개수만큼 loop를 돌린다.
     for(long_t i = 0; i < item_cnt; i++) {

//현재 폴더와 이전폴더는 무시하고
         if(!strcmp(pp_item[i]->d_name, ".") || !strcmp(pp_item[i]->d_name, "..")) continue;

         lstat(pp_item[i]->d_name, &fstat);
//Regular file과 Simbolic Link file일 경우
         if(S_ISREG(fstat.st_mode) || S_ISLNK(fstat.st_mode)) file_cnt++;
     }

     /* Allocate memory */
     str_t* pp_list;
     pp_list = new str_t [file_cnt];

     /* Copy the filenames to list */
     long_t index = 0;
     for(long_t i = 0; i < item_cnt; i++) {
         if(!strcmp(pp_item[i]->d_name, ".") || !strcmp(pp_item[i]->d_name, "..")) {
             free(pp_item[i]);
             continue;
         }

         lstat(pp_item[i]->d_name, &fstat);
         if(S_ISREG(fstat.st_mode) || S_ISLNK(fstat.st_mode)) {
             pp_list[index] = new char_t [strlen(pp_item[i]->d_name) + 1];
             strcpy(pp_list[index], pp_item[i]->d_name);

             index++;
         }
         free(pp_item[i]);
     }
     free(pp_item);

     list = pp_list;

     return file_cnt;
}
반응형
반응형
리눅스상에서 우리는 쉽게
-o, -i, -p, -a, -l 등 옵션을 적용할 수 있는 프로그램을 볼 수 있다.
위와같은 프로그램은 getopt로 간단하게 구현할 수 있다.

필요 Include 파일
#include "stdio.h"
#include "stdlib.h"
#include <unistd.h>

사용하는 함수
int getopt(int argc, char ** argv, const char *options)   

사용되는 변수
int opterr : 이변수값에 0이아닌 숫자를 넣으면, 알지 못하는 옵션이 들어오면 표준 에러 메세지를 출력해 준다

int optopt :  알지 못하는 옵션의 문자를 이 변수에 저장한다.

int optind : 다음 옵션의 index값을 지정해 준다. 이를 활용하여 옵션이 있는경우 없는경우 구분 할 수 있다. 초기값은 1.

cahr * optarg : 인수를 받아들이는 옵션들의 argment를 저장해 준다.

소스코드

    int oc;
    ci_name = init;
    int num_sfr_in=0, num_sfr_out=0;
    int num_con=0;
    if(argc == 1){
        printf ( "./citemgen <optinons> \n        -n    :    Custon Instruction Name\n        -i    :    Number of input SFR\n        -o    :    Number of output SFR\n        -c    :    Number of Control bit\n\n");
        return 1;
    } else {
//Get opt를 통하여 현재 존재하는 모든 option을 받아온다.
// " " 안에 들어가는 내용은, 어떠한 옵션들을 적용할 수 있는지 나타내 준다
// 뒤에: 가 붙을 경우 -o test 와 같이 추가 인자를 필요로 한다는 뜻이다.
        while ((oc=getopt(argc,argv,":n:i:o:c:")) != -1 )
        {
            switch(oc)
            {
                case 'n':
                    //fprintf(stdout,"option : n\n");
                    ci_name=optarg;
                    break;
                case 'i':
                    //fprintf(stdout,"option : si\n");
                    num_sfr_in=atoi(optarg);
                    break;
                case 'o':
                  //  fprintf(stdout,"option : si\n");
                    num_sfr_out=atoi(optarg);
                     break;
                case 'c':
                    //fprintf(stdout,"option : si\n");
                    num_con=atoi(optarg);
                    break;
//추가 인자가 필요한 Function인데, 추가 인자가 오지 않았을 경우
                case ':':
                    fprintf(stderr,"%s : option '-%c' requires an argument\n",argv[0],optopt);
                    break;
//모르는 인자가 옵션으로 나타났을 경우
                case '?':
                default:
                    fprintf(stderr,"%s : option '-%c' is invalid : ignored\n",argv[0],optopt);
                    break;
            }
        }
옵션이 없는경우의 처리

   for(int i = optind; i < argc ; i++){
         ...
   }
반응형
반응형
du -sh * 명령어로 현재 열려있는 폴더의 용량을 확인할 수 있다.
-s 는 summarize
-h 는 humman-readable 이였나??

이를 home dir에서 사용하면,

유저별 HDD 사용 용량을 알 수 있다.
반응형
반응형
다음과 같이 명령어를 상황에 맞추어 입력해 주면 된다.

접속이 안될 경우
[root@bunjee ~] setsebool -P samba_enable_home_dirs on

목록은 보이나 쓰기가 안될경우
[root@bunjee ~] setsebool -P samba_export_all_ro on

목록은 보이나 쓰기가 안 될 경우
[root@bunjee ~] setsebool -P samba_export_all_rw on
반응형

'Software > Linux' 카테고리의 다른 글

EMACS Verilog Mode설치하기  (0) 2012.02.02
Linux에 rTorrent + Screen 설치하기  (0) 2011.12.26
리눅스 현재폴더 용량체크  (0) 2011.11.24
리눅스 Samba 계정 추가 방법  (0) 2011.11.24
CentOS 5에 Vim 7.3 설치하기  (2) 2011.11.24
반응형
관리자 계정으로 서버에 접속해서

/etc/samba/smb.conf 에 다음과 같은 항목을 계정에 맞게 추가해준다.

[yooka88]
   comment = Seongmock Yoo
   path = /home/yooka88
   valid users = yooka88
   guest ok = no
   public = no
   read -nly = no
   writable = yes
   create mode = 0664
   directory mask = 0750
   printable = no

간단히 설명하면,
path = 연결해줄 directory 주소
valid user = 리눅스 서버 유저
read only / writable = 파일 읽기 쓰기 권한 설정
create mode / directory mask = 삼바를 통해 생성되는 파일들이나 폴더들에 대한 설정

위와같은 내용을 추가 했으면 shell에서 다음과 같은 명령어로 User를 추가하여준다

[root@socred ~]# smbpasswd -a [User]


-- 관리 명령어 --

smbpasswd -a seban : seban 사용자의 삼바용 패스워드 추가
smbpasswd -x seban : seban 사용자의 삼바 계정 삭제
smbpasswd -d seban : seban 사용자의 삼바 계정을 사용중지





이와같이 입력하면, Password를 입력하는 화면이 나오고
samba를 통해 접속할때 사용할 Password를 입력해준다.

다 완료하였으면 samba service를 restart해주면 된다

[root@socred ~]# service smb restart
SMB 서비스를 종료함:                                       [  확인  ]
NMB 서비스를 종료함:                                       [  확인  ]


 


 

SMB서비스를 시작하고 있습니다:                             [  확인  ]
NMB서비스를 시작하고 있습니다:                             [  확인  ]


 



이제 윈도우에서
Samba Drive로 연결 할 수 있다.

내컴퓨터나 탐색기에서
왼쪽에 컴퓨터 탭을 열어주고
오른쪽 위의 네트워크 드라이브 연결을 눌러준다

 



그리고 아래와 같이 서버와 계정 정보를 채우면 사용할 수있다


 




반응형
반응형
Cent Os에서 yum으로 vim을 깔면 7.0버젼까지 밖에
안올라가는것으로 보입니다.

그런데 제경우. vim 에서 e.명령어를 내렸을때, 폴더앞에 e글자가 붙어서
폴더를 제대로 Access할 수가 없어서
최신 vim을 깔기로 했습니다

다음과 같은순서로 작업하시면 됩니다.



Source Get
wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2

Extract
tar xvf vim-7.3.tar.bz2

Get Patch
cd vim73
mkdir patch
cd patch
wget "ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.*"
cd ..
cat patch/* | patch -p0

CC=gcc
CFLAGS="-fPIC -O2"
CPPFLAGS="-I/usr/local/include"  //소문자 L아니고 I(대문자 아이)입니다.
LDFLAGS="-L/usr/local/lib -R/usr/local/lib"
./configure --prefix=/usr/local --with-features=huge --enable-perlinterp --enable-multibyte --enable-hangulinput --without-x --disable-gui --disable-gtk-check --disable-gtk2-check --disable-gnome-check --disable-motif-check --disable-athena-check --disable-nextaw-check --disable-carbon-check --without-gnome
make
make install



만일 Vim 7.3 설치과정에서
tgetent()를 찾을수 없다는 Error가 발생한다면
yum으로 다음 패키지를 설치해 주면 된다.

yum install ncurses-devel

이러면 tgetent()를 찾을수 없다는 error가 넘어갈 것이다.
반응형

+ Recent posts