Original link : https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_MRG/1.2/html/Realtime_Reference_Guide/sect-Realtime_Reference_Guide-Using_library_calls_to_set_priority-sched_get_priority_min_and_sched_get_priority_max.html


#include <stdio.h>
#include <unistd.h>
#include <sched.h>

main()
{


  printf("Valid priority range for SCHED_OTHER: %d - %d\n",
  sched_get_priority_min(SCHED_OTHER),
  sched_get_priority_max(SCHED_OTHER));

  printf("Valid priority range for SCHED_FIFO: %d - %d\n",
  sched_get_priority_min(SCHED_FIFO),
  sched_get_priority_max(SCHED_FIFO));

  printf("Valid priority range for SCHED_RR: %d - %d\n",
  sched_get_priority_min(SCHED_RR),
  sched_get_priority_max(SCHED_RR));
}


Output

Valid priority range for SCHED_OTHER: 0 - 0

Valid priority range for SCHED_FIFO: 1 - 99

Valid priority range for SCHED_RR: 1 - 99



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > linux왕초보' 카테고리의 다른 글

pthread min, max priority on linux  (0) 2017.06.12
use vim like as source insight  (0) 2016.04.06
[ubuntu] change default shell  (0) 2016.03.22
GDB를 사용한 CORE 파일의 분석  (0) 2016.02.05
kernel make menuconfig error  (0) 2016.01.21
Caching your GitHub password in Git  (0) 2016.01.08
Serial ports usage on Linux  (0) 2016.01.08
process 종료  (0) 2015.05.28
fork  (0) 2015.05.26
Linux SSD 최적화  (0) 2015.04.17
fflush, fileno  (0) 2015.04.07
Posted by bluelimn

vim에서 backspace 되지 않을

~/.bashrc 또는 ~/.bash_profile 추가

stty erase '^?'

 

vim에서 .vimrc 가져오지 못을

~/.bashrc 또는 ~/.bash_profile 추가

alias vim="vim -S ~/.vimrc"

 

 

vim source insight처럼 사용하기(taglist, SrcExpl, nerdTree)

* SrcExpl: http://www.vim.org/scripts/script.php?script_id=2179
* taglist: http://www.vim.org/scripts/script.php?script_id=273
*nerdTree: http://www.vim.org/scripts/script.php?script_id=1658

~/.vim/ 하위에 설치


~/.vimrc 수정

set tabstop=2

set shiftwidth=2

set softtabstop=2

set cindent

set autoindent

set smartindent

set incsearch

syntax on

filetype on

set background=dark

colorscheme evening

set backspace=eol,start,indent

set history=1000

set hlsearch

set showmatch

set nu

"============= Like a Source Insight =============”

"=== Taglist ===

" // The switch of the Taglist

nmap <F7> :TlistToggle<CR>

let Tlist_Ctags_Cmnd = "/usr/bin/ctags"

let Tlist_Inc_Winwidth = 0

let Tlist_Exit_OnlyWindow = 0

let Tlist_Auto_Open = 0

let Tlist_Use_Left_Window = 1

"=== NERDTree ===

" // The switch of the NERDTree

nmap <F9> :NERDTreeToggle<CR>

let NERDTreeWinPos = "right"

"=== Source explorer ===

" // The switch of the Source Explorer

nmap <F8> :SrcExplToggle<CR>

"// Map the keys below to jump from one window to another:

nmap <C-H> <C-W>h

nmap <C-J> <C-W>j

nmap <C-K> <C-W>k

nmap <C-L> <C-W>l

let g:SrcExpl_winHeight = 8

let g:SrcExpl_refreshTime = 100

let g:SrcExpl_isUpdateTags = 0

" // Set “Enter” key to jump into the exact definition context

let g:SrcExpl_jumpKey = "<ENTER>"

" // Set “Space” key for back from the definition context

let g:SrcExpl_gobackKey = "<SPACE>"

map <F3> :tnext^M

map <F2> :tprevious^M

 

경우 F7, F8, F9 이용하여 켜고 있음.


Tag 생성

mktrace.sh

#!/bin/sh

rm -rf cscope.files cscope.files

rm -rf tags


find . \( -name  *.c  -o -name  *.cpp  -o -name  *.cc  -o -name  *.h  -o -name  *.s  -o -name  *.S  -o -name  *.asm  \) -print > cscope.files

ctags -R


cscope -i cscope.files 


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > linux왕초보' 카테고리의 다른 글

pthread min, max priority on linux  (0) 2017.06.12
use vim like as source insight  (0) 2016.04.06
[ubuntu] change default shell  (0) 2016.03.22
GDB를 사용한 CORE 파일의 분석  (0) 2016.02.05
kernel make menuconfig error  (0) 2016.01.21
Caching your GitHub password in Git  (0) 2016.01.08
Serial ports usage on Linux  (0) 2016.01.08
process 종료  (0) 2015.05.28
fork  (0) 2015.05.26
Linux SSD 최적화  (0) 2015.04.17
fflush, fileno  (0) 2015.04.07
Posted by bluelimn

bash를 주로 사용하는데 sh로 초기 shell이 적용되어 color가 맞지 않는다거나 하는 경우


# echo $SHELL

output : 

/bin/sh


chsh -s {shell-name} {user-name}

#sudo chsh -s /bin/bash john



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > linux왕초보' 카테고리의 다른 글

pthread min, max priority on linux  (0) 2017.06.12
use vim like as source insight  (0) 2016.04.06
[ubuntu] change default shell  (0) 2016.03.22
GDB를 사용한 CORE 파일의 분석  (0) 2016.02.05
kernel make menuconfig error  (0) 2016.01.21
Caching your GitHub password in Git  (0) 2016.01.08
Serial ports usage on Linux  (0) 2016.01.08
process 종료  (0) 2015.05.28
fork  (0) 2015.05.26
Linux SSD 최적화  (0) 2015.04.17
fflush, fileno  (0) 2015.04.07
Posted by bluelimn

출처 : TOOL 이야기

http://blog.daum.net/aswip/5935659



프로세스가 비정상적으로 종료될 경우, core 파일을 통하여 원인 분석을 할 수 있으며,

프로세스가 비정상적으로 종료될 경우, core 파일을 남길지 여부는 다음과 같은 명령어를 통해서

설정이 가능합니다.




[step 1] 비정상 종료 되는 샘플 프로그램 작성

#include <stdio.h>

#include <stdlib.h>


void Abnormal()

{

    int n = 1024;

    char *p = (char *)malloc(sizeof(char) * 1);


    free(p);

    free(p);                /* double free */

}


void AbnormalContainer()

{

    Abnormal();

}


void Normal()

{

    printf("normal function.\n");

}


int main(int argc, char **argv)

{

    AbnormalContainer();

    Normal();

    return 0;

}


[step 2] 비정상 종료되는 샘플 소스 컴파일

 

[root@linux temp]# gcc -o main main.c -g

 

※ 주 의 사 항

    gdb를 사용하여 core파일을 분석하기 위해서는 반드시 실행파일 컴파일시에 -g 옵션을 사용해야 합니다.



[step 3] 비정상 종료되는 샘플 실행

 

[root@linux temp]# ./main

*** glibc detected *** ./main: double free or corruption (fasttop): 0x0000000000601010 ***

======= Backtrace: =========

/lib64/libc.so.6[0x3cd3472832]

/lib64/libc.so.6(cfree+0x8c)[0x3cd3475f2c]

./main[0x400577]

./main[0x400587]

./main[0x4005b2]

/lib64/libc.so.6(__libc_start_main+0xf4)[0x3cd341e074]

./main[0x400499]

======= Memory map: ========

00400000-00401000 r-xp 00000000 fd:00 47153195                           /root/temp/main

00600000-00601000 rw-p 00000000 fd:00 47153195                           /root/temp/main

00601000-00622000 rw-p 00601000 00:00 0                                  [heap]

3cd2200000-3cd221b000 r-xp 00000000 fd:00 61440048                       /lib64/ld-2.7.so

3cd241a000-3cd241b000 r--p 0001a000 fd:00 61440048                       /lib64/ld-2.7.so

3cd241b000-3cd241c000 rw-p 0001b000 fd:00 61440048                       /lib64/ld-2.7.so

3cd3400000-3cd354d000 r-xp 00000000 fd:00 61440050                       /lib64/libc-2.7.so

3cd354d000-3cd374d000 ---p 0014d000 fd:00 61440050                       /lib64/libc-2.7.so

3cd374d000-3cd3751000 r--p 0014d000 fd:00 61440050                       /lib64/libc-2.7.so

3cd3751000-3cd3752000 rw-p 00151000 fd:00 61440050                       /lib64/libc-2.7.so

3cd3752000-3cd3757000 rw-p 3cd3752000 00:00 0

3cddc00000-3cddc0d000 r-xp 00000000 fd:00 61440308                       /lib64/libgcc_s-4.1.2-20070925.so.1

3cddc0d000-3cdde0d000 ---p 0000d000 fd:00 61440308                       /lib64/libgcc_s-4.1.2-20070925.so.1

3cdde0d000-3cdde0e000 rw-p 0000d000 fd:00 61440308                       /lib64/libgcc_s-4.1.2-20070925.so.1

2aaaaaaab000-2aaaaaaad000 rw-p 2aaaaaaab000 00:00 0

2aaaaaacc000-2aaaaaacd000 rw-p 2aaaaaacc000 00:00 0

2aaaac000000-2aaaac021000 rw-p 2aaaac000000 00:00 0

2aaaac021000-2aaab0000000 ---p 2aaaac021000 00:00 0

7fffc8065000-7fffc807a000 rw-p 7ffffffea000 00:00 0                      [stack]

7fffc81fd000-7fffc81ff000 r-xp 7fffc81fd000 00:00 0                      [vdso]

ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]

Aborted (core dumped)

[root@linux temp]# ls -al

total 476

drwxr-xr-x  2 root root   4096 2008-08-06 09:05 ./

drwxr-xr-- 32 root root   4096 2008-08-06 09:04 ../

-rw-------  1 root root 454656 2008-08-06 09:05 core.2805

-rw-r--r--  1 root root    260 2008-08-06 09:04 main.c


 

[step 4] gdb를 사용한 core 파일 분석

 

gdb를 사용하여 core파일을 분석하기 위해서는, 다음과 같이 gdb를 실행시키면 됩니다.

[root@linux temp]# gdb ./main ./core.2876

GNU gdb Red Hat Linux (6.6-45.fc8rh)

Copyright (C) 2006 Free Software Foundation, Inc.

GDB is free software, covered by the GNU General Public License, and you are

welcome to change it and/or distribute copies of it under certain conditions.

Type "show copying" to see the conditions.

There is absolutely no warranty for GDB.  Type "show warranty" for details.

This GDB was configured as "x86_64-redhat-linux-gnu"...

Using host libthread_db library "/lib64/libthread_db.so.1".

warning: Can't read pathname for load map: Input/output error.

Reading symbols from /lib64/libc.so.6...done.

Loaded symbols for /lib64/libc.so.6

Reading symbols from /lib64/ld-linux-x86-64.so.2...done.

Loaded symbols for /lib64/ld-linux-x86-64.so.2

Reading symbols from /lib64/libgcc_s.so.1...done.

Loaded symbols for /lib64/libgcc_s.so.1

Core was generated by `./main'.

Program terminated with signal 6, Aborted.

#0  0x0000003cd3430ec5 in raise () from /lib64/libc.so.6

(gdb) backtrace                      --> backtrace 명령어를 사용해서 죽기 직전까지 호출되었던 스택 정보 확인

#0  0x0000003cd3430ec5 in raise () from /lib64/libc.so.6

#1  0x0000003cd3432970 in abort () from /lib64/libc.so.6

#2  0x0000003cd346b0db in __libc_message () from /lib64/libc.so.6

#3  0x0000003cd3472832 in _int_free () from /lib64/libc.so.6

#4  0x0000003cd3475f2c in free () from /lib64/libc.so.6

#5  0x0000000000400577 in Abnormal () at main.c:10

#6  0x0000000000400587 in AbnormalContainer () at main.c:15

#7  0x00000000004005b2 in main (argc=1, argv=0x7fffc8077798) at main.c:25

Missing separate debuginfos, use: debuginfo-install gcc.x86_64 glibc.x86_64

(gdb) break Abnormal             --> 마지막으로 호출된 함수에 break point 설정

Breakpoint 1 at 0x400550: file main.c, line 6.

(gdb) r                                  --> 실행후 차례대로 디버깅

Starting program: /root/temp/main

Breakpoint 1, Abnormal () at main.c:6

6               int n = 1024;

(gdb) s

7               char *p = (char *)malloc(sizeof(char) * 1);

(gdb) s

9               free(p);

(gdb) s

10              free(p);                /* double free */

(gdb) s

*** glibc detected *** /root/temp/main: double free or corruption (fasttop): 0x0000000000601010 ***

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > linux왕초보' 카테고리의 다른 글

pthread min, max priority on linux  (0) 2017.06.12
use vim like as source insight  (0) 2016.04.06
[ubuntu] change default shell  (0) 2016.03.22
GDB를 사용한 CORE 파일의 분석  (0) 2016.02.05
kernel make menuconfig error  (0) 2016.01.21
Caching your GitHub password in Git  (0) 2016.01.08
Serial ports usage on Linux  (0) 2016.01.08
process 종료  (0) 2015.05.28
fork  (0) 2015.05.26
Linux SSD 최적화  (0) 2015.04.17
fflush, fileno  (0) 2015.04.07
Posted by bluelimn

 HOSTLD  scripts/kconfig/mconf

scripts/kconfig/mconf.o: In function `show_help':

mconf.c:(.text+0x7e1): undefined reference to `stdscr'

scripts/kconfig/mconf.o: In function `main':

mconf.c:(.text+0x1256): undefined reference to `initscr'

mconf.c:(.text+0x125d): undefined reference to `stdscr'

scripts/kconfig/lxdialog/checklist.o: In function `print_arrows':

checklist.c:(.text+0x41): undefined reference to `wmove'

checklist.c:(.text+0x61): undefined reference to `acs_map'

checklist.c:(.text+0x69): undefined reference to `waddch'

checklist.c:(.text+0x7b): undefined reference to `waddnstr'

...




Solution

sudo apt-get install libncurses5-dev

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > linux왕초보' 카테고리의 다른 글

pthread min, max priority on linux  (0) 2017.06.12
use vim like as source insight  (0) 2016.04.06
[ubuntu] change default shell  (0) 2016.03.22
GDB를 사용한 CORE 파일의 분석  (0) 2016.02.05
kernel make menuconfig error  (0) 2016.01.21
Caching your GitHub password in Git  (0) 2016.01.08
Serial ports usage on Linux  (0) 2016.01.08
process 종료  (0) 2015.05.28
fork  (0) 2015.05.26
Linux SSD 최적화  (0) 2015.04.17
fflush, fileno  (0) 2015.04.07
Posted by bluelimn

원문링크 : https://help.github.com/articles/caching-your-github-password-in-git/


If you're cloning GitHub repositories using HTTPS, you can use a credential helper to tell Git to remember your GitHub username and password every time it talks to GitHub.

If you clone GitHub repositories using SSH, then you authenticate using SSH keys instead of a username and password. For help setting up an SSH connection, see Generating SSH Keys.

Tip: You need Git 1.7.10 or newer to use the credential helper.

The credential helper is included with GitHub Desktop. The app also provides a Git shell so you won't ever need to install and configure Git manually. For more information, see "Getting Started with GitHub Desktop."

If you prefer working with the command line, you can also install a native Git shell, such as msysgit. With msysgit, running the following in the command line will store your credentials:

git config --global credential.helper wincred


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > linux왕초보' 카테고리의 다른 글

pthread min, max priority on linux  (0) 2017.06.12
use vim like as source insight  (0) 2016.04.06
[ubuntu] change default shell  (0) 2016.03.22
GDB를 사용한 CORE 파일의 분석  (0) 2016.02.05
kernel make menuconfig error  (0) 2016.01.21
Caching your GitHub password in Git  (0) 2016.01.08
Serial ports usage on Linux  (0) 2016.01.08
process 종료  (0) 2015.05.28
fork  (0) 2015.05.26
Linux SSD 최적화  (0) 2015.04.17
fflush, fileno  (0) 2015.04.07
Posted by bluelimn

원문 링크 : http://www.armadeus.com/wiki/index.php?title=Serial_ports_usage_on_Linux


http://unix.stackexchange.com/questions/117037/how-to-send-data-to-a-serial-port-and-see-any-answer


Changing port parameters


To get current parameters

# stty -F /dev/ttyUSB0

speed 115200 baud;

intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ^J;

eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;

lnext = ^V; flush = ^O; min = 1; time = 0;

-brkint ixoff -imaxbel

-iexten -echoctl


To only get actual speed:

# stty -F /dev/ttySMX0 speed

115200


By default serial ports are configured as terminal emulator. If you want to use them as "raw" serial port you will have to do first (example for port 1):

# stty -F /dev/ttyUSB1 raw

# stty -F /dev/ttyUSB1 -echo -echoe -echok


To change baudrate of port 2 to 115200 :

# stty -F /dev/ttyUSB2 115200

stty -speed 19200 < /dev/ttyS1
stty -speed 19200 -f /dev/ttyS1


Sending/Receiving data

Send

# echo "HELLO" > /dev/ttyUSB0

echo -e "\x7E\x03\xD0\xAF und normaler Text" > /dev/ttyS0

The echo -e command enables the interpretation of backslash escapes.


To receive data (ASCII in that case):

# cat /dev/ttyUSB0



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > linux왕초보' 카테고리의 다른 글

use vim like as source insight  (0) 2016.04.06
[ubuntu] change default shell  (0) 2016.03.22
GDB를 사용한 CORE 파일의 분석  (0) 2016.02.05
kernel make menuconfig error  (0) 2016.01.21
Caching your GitHub password in Git  (0) 2016.01.08
Serial ports usage on Linux  (0) 2016.01.08
process 종료  (0) 2015.05.28
fork  (0) 2015.05.26
Linux SSD 최적화  (0) 2015.04.17
fflush, fileno  (0) 2015.04.07
[Linux] stream write  (0) 2015.03.26
Posted by bluelimn

eixt()


#include <stdlib.h>
void exit (int status);

C library 종료 단계
1. atexit(), on_exit() 등록함수를 역순으로 출력
2. std I/O stream flush
3. tmpfile()로 만든 임시 파일 삭제
4. _exit() 호출

#include <unistd.h>
void _exit (int status);

사용하지 않는 자원 정리
allocated memory, opend file,, system V semaphore 등
kernel은 process를 제거한 다음 parent에게 통보함

application은 _exit()를 직접 호출할 수는 있지만 의미없다. vfork() 사용자는 fork 이후 exit()대신 _exit()호출해야 함.


atexit()

#include <stdlib.h>
int atexit (void (*function) (void));

주의 : parameter, return이 없다.
POSIX에서는 ATEXIT_MAX까지 함수 등록을 지원해야 하며 최소 32가 되어야 한다.
sysconf()와 _SC_ATEXIT_MAX로 정확한 값을 알 수 있다.

long atexit_max;
atexit_max = sysconf(_SC_ATEXIT_MAX);
printf("atexit_max = %ld\n", atexit_max);


더보기



on_exit()

#include <stdlib.h>
int on_exit (void (*function)(int, void *), void *arg);

parameter를 허용함
주의 : 솔라리스에서는 더이상 이 함수를 지원하지 않는다.

void my_function(int status, void *arg);


SIGCHLD
child process가 죽으면 kernel이 parent에게 통보함
signal(), sigaction()을 이용하여 처리.

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > linux왕초보' 카테고리의 다른 글

[ubuntu] change default shell  (0) 2016.03.22
GDB를 사용한 CORE 파일의 분석  (0) 2016.02.05
kernel make menuconfig error  (0) 2016.01.21
Caching your GitHub password in Git  (0) 2016.01.08
Serial ports usage on Linux  (0) 2016.01.08
process 종료  (0) 2015.05.28
fork  (0) 2015.05.26
Linux SSD 최적화  (0) 2015.04.17
fflush, fileno  (0) 2015.04.07
[Linux] stream write  (0) 2015.03.26
linux filesystem 사용 용량 확인  (0) 2015.03.18
Posted by bluelimn

fork

Programming/linux왕초보 2015.05.26 11:52

fork()

#include <sys/types.h>
#include <unistd.h>

pid_t fork(void);

* child pid는 parent pid와 다르게 새롭게 생성
* 0이 pid로 반환되면 child
* 대기중인 signal은 정리되며, child에게 상속되지 않음
* fd lock은 상속되지 않음


fork 기본 구조



background로 다른 프로그램 실행시킬 때 많이 사용한다.


binary실행



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > linux왕초보' 카테고리의 다른 글

GDB를 사용한 CORE 파일의 분석  (0) 2016.02.05
kernel make menuconfig error  (0) 2016.01.21
Caching your GitHub password in Git  (0) 2016.01.08
Serial ports usage on Linux  (0) 2016.01.08
process 종료  (0) 2015.05.28
fork  (0) 2015.05.26
Linux SSD 최적화  (0) 2015.04.17
fflush, fileno  (0) 2015.04.07
[Linux] stream write  (0) 2015.03.26
linux filesystem 사용 용량 확인  (0) 2015.03.18
[Linux] Select and Poll  (0) 2015.01.27
Posted by bluelimn

http://www.smallake.kr/?p=7709


위의 링크 원문에서 일부 발췌

원문제목은 "Linux환경에서 SSD 성능 최적화하기"


이처럼 SSD는 미리 블럭을 비워놓지 않으면, 쓰기작업을 할때 블럭을 비우는 작업을 해야하기 때문에 쓰기 성능이 떨어집니다. 이런 단점을 해결하기 위하여 운영체제가 한가할 때 삭제한다고 표시한 데이터를 미리 비워 두도록 하는 기능을 만들었고 이를 TRIM이라고 합니다. TRIM은 읽기와 무관하고 오직 쓰기와 관계합니다. 또한 SSD가 TRIM을 지원하여야 하고 OS도 지원하여야 합니다. Linux의 경우 TRIM을 활성화하려면 다음과 같이 명령어를 실행합니다.

이제 TRIM을 OS와 SSD가 지원한다고 하면 File System을 Mount를 할 때 옵션을 추가해주어야 합니다.

그러면 현재 사용중인 Linux의 Scheduler가 무엇이고 어떻게 변경하는지 알아보겠습니다.

변경은 아래와 같이 합니다.



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

hdparm으로 확인했는데 SSD가 trim을 지원하지 않는다면?

$ sudo fstrim / -v

와 같이 수동으로 할 수 있다. 그런데 막상 해보니까 한번에 0 bytes wre trimmed가 나오지 않아 몇번 반복해줘야 했다.

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > linux왕초보' 카테고리의 다른 글

kernel make menuconfig error  (0) 2016.01.21
Caching your GitHub password in Git  (0) 2016.01.08
Serial ports usage on Linux  (0) 2016.01.08
process 종료  (0) 2015.05.28
fork  (0) 2015.05.26
Linux SSD 최적화  (0) 2015.04.17
fflush, fileno  (0) 2015.04.07
[Linux] stream write  (0) 2015.03.26
linux filesystem 사용 용량 확인  (0) 2015.03.18
[Linux] Select and Poll  (0) 2015.01.27
Example syntax for Secure Copy (scp) : scp사용법  (0) 2014.04.02
Posted by bluelimn

#include <stdio.h>

int fflush (FILE *stream);


return value : 

success : 0

fail : EOF


user buffer에 있는 내용을 kernel buffer에 write한다.

fwrite대신 강제로 write를 하는 것과 비슷함.
실제로 file-system에 기록되는지는 보장하지 못함.

그래서 보통 fflush() 다음에 fsync()를 같이 사용한다.




#include <stdio.h>

int fileno (FILE *stream);


return value : 

success : fd

fail : -1(EBADF)


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > linux왕초보' 카테고리의 다른 글

Caching your GitHub password in Git  (0) 2016.01.08
Serial ports usage on Linux  (0) 2016.01.08
process 종료  (0) 2015.05.28
fork  (0) 2015.05.26
Linux SSD 최적화  (0) 2015.04.17
fflush, fileno  (0) 2015.04.07
[Linux] stream write  (0) 2015.03.26
linux filesystem 사용 용량 확인  (0) 2015.03.18
[Linux] Select and Poll  (0) 2015.01.27
Example syntax for Secure Copy (scp) : scp사용법  (0) 2014.04.02
tar 분할압축/풀기  (0) 2014.03.20
Posted by bluelimn


char 쓰기



string 쓰기



binary 쓰기







저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > linux왕초보' 카테고리의 다른 글

Serial ports usage on Linux  (0) 2016.01.08
process 종료  (0) 2015.05.28
fork  (0) 2015.05.26
Linux SSD 최적화  (0) 2015.04.17
fflush, fileno  (0) 2015.04.07
[Linux] stream write  (0) 2015.03.26
linux filesystem 사용 용량 확인  (0) 2015.03.18
[Linux] Select and Poll  (0) 2015.01.27
Example syntax for Secure Copy (scp) : scp사용법  (0) 2014.04.02
tar 분할압축/풀기  (0) 2014.03.20
slang_rs_export_foreach.cpp Error: ParamName  (0) 2014.02.26
Posted by bluelimn

df / du


df : block별 사용량 확인


df -lh

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2       909G  222G  641G  26% /

none            4.0K     0  4.0K   0% /sys/fs/cgroup

udev            3.9G  4.0K  3.9G   1% /dev

tmpfs           790M  7.5M  783M   1% /run

none            5.0M     0  5.0M   0% /run/lock

none            3.9G  152K  3.9G   1% /run/shm

none            100M   48K  100M   1% /run/user

/dev/sda1       511M  7.3M  504M   2% /boot/efi


Mandatory arguments to long options are mandatory for short options too.
  -a, --all             include dummy file systems
  -B, --block-size=SIZE  scale sizes by SIZE before printing them.  E.g.,
                           '-BM' prints sizes in units of 1,048,576 bytes.
                           See SIZE format below.
      --total           produce a grand total
  -h, --human-readable  print sizes in human readable format (e.g., 1K 234M 2G)
  -H, --si              likewise, but use powers of 1000 not 1024
  -i, --inodes          list inode information instead of block usage
  -k                    like --block-size=1K
  -l, --local           limit listing to local file systems
      --no-sync         do not invoke sync before getting usage info (default)
      --output[=FIELD_LIST]  use the output format defined by FIELD_LIST,
                               or print all fields if FIELD_LIST is omitted.
  -P, --portability     use the POSIX output format
      --sync            invoke sync before getting usage info
  -t, --type=TYPE       limit listing to file systems of type TYPE
  -T, --print-type      print file system type
  -x, --exclude-type=TYPE   limit listing to file systems not of type TYPE
  -v                    (ignored)
      --help     display this help and exit
      --version  output version information and exit

Display values are in units of the first available SIZE from --block-size,
and the DF_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE environment variables.
Otherwise, units default to 1024 bytes (or 512 if POSIXLY_CORRECT is set).

SIZE is an integer and optional unit (example: 10M is 10*1024*1024).  Units
are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, ... (powers of 1000).

FIELD_LIST is a comma-separated list of columns to be included.  Valid
field names are: 'source', 'fstype', 'itotal', 'iused', 'iavail', 'ipcent',
'size', 'used', 'avail', 'pcent' and 'target' (see info page).


du : directory별 사용량 확인

du -sh ./*
8.0K    ./AndroidManifest_test.xml
32K     ./AndroidManifest.xml
4.0K    ./Android.mk
4.0K    ./CleanSpec.mk
656K    ./jni
76K     ./lib
2.5M    ./res
4.4M    ./src
68K     ./tests


Mandatory arguments to long options are mandatory for short options too.
  -0, --null            end each output line with 0 byte rather than newline
  -a, --all             write counts for all files, not just directories
      --apparent-size   print apparent sizes, rather than disk usage; although
                          the apparent size is usually smaller, it may be
                          larger due to holes in ('sparse') files, internal
                          fragmentation, indirect blocks, and the like
  -B, --block-size=SIZE  scale sizes by SIZE before printing them.  E.g.,
                           '-BM' prints sizes in units of 1,048,576 bytes.
                           See SIZE format below.
  -b, --bytes           equivalent to '--apparent-size --block-size=1'
  -c, --total           produce a grand total
  -D, --dereference-args  dereference only symlinks that are listed on the
                          command line
  -d, --max-depth=N     print the total for a directory (or file, with --all)
                          only if it is N or fewer levels below the command
                          line argument;  --max-depth=0 is the same as
                          --summarize
      --files0-from=F   summarize disk usage of the NUL-terminated file
                          names specified in file F;
                          If F is - then read names from standard input
  -H                    equivalent to --dereference-args (-D)
  -h, --human-readable  print sizes in human readable format (e.g., 1K 234M 2G)
  -k                    like --block-size=1K
  -L, --dereference     dereference all symbolic links
  -l, --count-links     count sizes many times if hard linked
  -m                    like --block-size=1M
  -P, --no-dereference  don't follow any symbolic links (this is the default)
  -S, --separate-dirs   do not include size of subdirectories
      --si              like -h, but use powers of 1000 not 1024
  -s, --summarize       display only a total for each argument
  -t, --threshold=SIZE  exclude entries smaller than SIZE if positive,
                          or entries greater than SIZE if negative
      --time            show time of the last modification of any file in the
                          directory, or any of its subdirectories
      --time=WORD       show time as WORD instead of modification time:
                          atime, access, use, ctime or status
      --time-style=STYLE  show times using style STYLE:
                          full-iso, long-iso, iso, +FORMAT
                          FORMAT is interpreted like 'date'
  -X, --exclude-from=FILE  exclude files that match any pattern in FILE
      --exclude=PATTERN    exclude files that match PATTERN
  -x, --one-file-system    skip directories on different file systems
      --help     display this help and exit
      --version  output version information and exit

Display values are in units of the first available SIZE from --block-size,
and the DU_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE environment variables.
Otherwise, units default to 1024 bytes (or 512 if POSIXLY_CORRECT is set).

SIZE is an integer and optional unit (example: 10M is 10*1024*1024).  Units
are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, ... (powers of 1000).





저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > linux왕초보' 카테고리의 다른 글

process 종료  (0) 2015.05.28
fork  (0) 2015.05.26
Linux SSD 최적화  (0) 2015.04.17
fflush, fileno  (0) 2015.04.07
[Linux] stream write  (0) 2015.03.26
linux filesystem 사용 용량 확인  (0) 2015.03.18
[Linux] Select and Poll  (0) 2015.01.27
Example syntax for Secure Copy (scp) : scp사용법  (0) 2014.04.02
tar 분할압축/풀기  (0) 2014.03.20
slang_rs_export_foreach.cpp Error: ParamName  (0) 2014.02.26
printk : kernel log 설정  (0) 2013.11.19
Posted by bluelimn

IPC : pipe, named pipe, semaphore, message queue, shared memory, futex, socket


Futex : fast userspace mutex(Spinlock 방식)

- 장점 : 빠름 (sleep 대신 while), 

            lock이 user space에 있기 때문에 접근성이 좋음(공유 메모리나 Thread 및           Process간 공유 가능)

- 단점 : 기본적으로 loop를 계속 돌고 있기 때문에 core수가 뒷받침되어야 한다. 

           (single core에서는 소용 없음.)


pthread mutex vs pthread spinlock

Pasted from <http://www.alexonlinux.com/pthread-mutex-vs-pthread-spinlock> 



Pselect()

int pselect(int nfds, fd_set *readfds, fd_set *writefds,

           fd_set *exceptfds, const struct timespec *timeout,

           const sigset_t *sigmask);

• pselect는 struct timespec 구조체 사용한다. timespec 구조체를 사용함으로써        나노초까지 세밀하게 조정할 수 있게 되었다.


struct timespec {

    long    tv_sec;         /* seconds */

    long    tv_nsec;        /* nanoseconds */

};

• pselect 는 Linux(:12) 커널 2.6.16에 추가되었다. 이전에는 glibc에서 애뮬레이트한
          함수가 제공되었으나 버그를 가지고 있었다.

• sigmask를 사용해서 시그널을 블럭시킬 수 있다. select의 경우 수행되는 도중에         시그널에 의한 인터럽트가 발생하게 되면, race condition 혹은 무한 블록킹         상태에 놓일 수 있었다. pselect를 사용하면 이러한 문제를 제거할 수 있다. 


Pasted from <http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/2/select> 

Pselect가 select와 다른 점

- Nano sec단위로 사용하므로 이론적으로는 타이머 해상도가 정밀하나 실전에서는
        micro sec단위도 안정적으로 제공하지 못한다.

- Timeout parameter를 변경하지 않는다. 사용할 때마다 timeout을 다시 설정할
        필요가 없음

- Signal parameter가 추가됨(sigmask) : signal 을 차단함.




Select() : 동기식 다중 입출력 제공
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>

Int select (int n,
                  fd_set *readfds,
                   fd_set *writefds,
                   fd_set *execptfds,
                   struct timeval *timeout);

FD_CLR(int fd, fd_set *set);       /* delete FD */
FD_ISSET(int fd, fd_set *set);    /* select의 결과에 해당 fd가 있는지 */
FD_SET(int fd, fd_set *set);      /* add FD*/
FD_ZERO(fd_set *set);


#include <sys/time.h>
Struct timeval {
             long tv_sec;    /* sec */
             long tv_usec;  /* micro sec */
};

Poll() : select를 보완 (fd set을 하나로 통일)
#include <sys/poll.h>
Int poll (struct pollfd *fds, unsigned int nfds, int timeout);

#include <sys/poll.h>
Struct pollfd {
            int fd;
            short events;   /* 감시 대상 요청 */
            short revents; /* returned event */
}

Events:
POLLIN : Data other than high-priority data may be read without blocking.
POLLRDNORM : Normal data may be read without blocking.
POLLRDBAND : Priority data may be read without blocking.
POLLPRI : High-priority data may be read without blocking.
POLLOUT : Normal data may be written without blocking.
POLLWRNORM : Equivalent to POLLOUT.
POLLWRBAND : Priority data may be written.
POLLERR : An error has occurred on the device or stream. This flag is only valid in the revents bitmask; it shall be ignored in the events member.
POLLHUP : The device has been disconnected. This event and POLLOUT are mutually-exclusive; a stream can never be writable if a hangup has occurred. However, this event and POLLIN, POLLRDNORM, POLLRDBAND, or POLLPRI are not mutually-exclusive. This flag is only valid in the revents bitmask; it shall be ignored in the events member.
POLLNVAL : The specified fd value is invalid. This flag is only valid in the revents member; it shall ignored in the events member.

Ppoll() : pselect 처럼 만든 것, 나노초 단위, sigmask 제공, linux 전용
#define _GNU_SOURCE
#include <sys/poll.h>
Int ppoll (struct pollfd *fds,
                  nfds_t nfds,
                  const struct timespec *timeout,
                  const sigset_t *sigmask);

Poll과 select 비교

oll 

select 

매개변수에 +1(fd+1)이 필요없다 

 

fd의 숫자가 큰 경우 select보다 효율적 

fd_set값이 크면 비효율적이다. bitmask를 모두 검사하며 특히 bit가 분산된 경우 더욱 비효율적이다 

 

 매번 set을 초기화해야 한다.(FD_ZERO)

 

 이식성을 높이기 위해 timeout parameter(timeval)를 매번 초기화 해야함

Pselect() 사용할 경우 초기화 안해도

 몇몇 UNIX에서는 poll을 지원하지 않는다

 이식성이 높다

 

 microsecond단위까지는 timeout resolution이 더 좋다

Pasted from <http://bluelimn.tistory.com/entry/2-epoll-select-poll>

 


Select example(server)


Select example(client)


Poll example


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > linux왕초보' 카테고리의 다른 글

fork  (0) 2015.05.26
Linux SSD 최적화  (0) 2015.04.17
fflush, fileno  (0) 2015.04.07
[Linux] stream write  (0) 2015.03.26
linux filesystem 사용 용량 확인  (0) 2015.03.18
[Linux] Select and Poll  (0) 2015.01.27
Example syntax for Secure Copy (scp) : scp사용법  (0) 2014.04.02
tar 분할압축/풀기  (0) 2014.03.20
slang_rs_export_foreach.cpp Error: ParamName  (0) 2014.02.26
printk : kernel log 설정  (0) 2013.11.19
[Linux] Top 명령어 사용법  (0) 2013.11.08
Posted by bluelimn

원문 : http://www.hypexr.org/linux_scp_help.php


What is Secure Copy?

scp allows files to be copied to, from, or between different hosts. It uses ssh for data transfer and provides the same authentication and same level of security as ssh.

Examples

Copy the file "foobar.txt" from a remote host to the local host

    $ scp your_username@remotehost.edu:foobar.txt /some/local/directory

Copy the file "foobar.txt" from the local host to a remote host

    $ scp foobar.txt your_username@remotehost.edu:/some/remote/directory

Copy the directory "foo" from the local host to a remote host's directory "bar"

    $ scp -r foo your_username@remotehost.edu:/some/remote/directory/bar

Copy the file "foobar.txt" from remote host "rh1.edu" to remote host "rh2.edu"

    $ scp your_username@rh1.edu:/some/remote/directory/foobar.txt \
    your_username@rh2.edu:/some/remote/directory/

Copying the files "foo.txt" and "bar.txt" from the local host to your home directory on the remote host

    $ scp foo.txt bar.txt your_username@remotehost.edu:~

Copy the file "foobar.txt" from the local host to a remote host using port 2264

    $ scp -P 2264 foobar.txt your_username@remotehost.edu:/some/remote/directory

Copy multiple files from the remote host to your current directory on the local host

    $ scp your_username@remotehost.edu:/some/remote/directory/\{a,b,c\} .
    $ scp your_username@remotehost.edu:~/\{foo.txt,bar.txt\} .

scp Performance

By default scp uses the Triple-DES cipher to encrypt the data being sent. Using the Blowfish cipher has been shown to increase speed. This can be done by using option -c blowfish in the command line.

    $ scp -c blowfish some_file your_username@remotehost.edu:~

It is often suggested that the -C option for compression should also be used to increase speed. The effect of compression, however, will only significantly increase speed if your connection is very slow. Otherwise it may just be adding extra burden to the CPU. An example of using blowfish and compression:

    $ scp -c blowfish -C local_file your_username@remotehost.edu:~


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > linux왕초보' 카테고리의 다른 글

Linux SSD 최적화  (0) 2015.04.17
fflush, fileno  (0) 2015.04.07
[Linux] stream write  (0) 2015.03.26
linux filesystem 사용 용량 확인  (0) 2015.03.18
[Linux] Select and Poll  (0) 2015.01.27
Example syntax for Secure Copy (scp) : scp사용법  (0) 2014.04.02
tar 분할압축/풀기  (0) 2014.03.20
slang_rs_export_foreach.cpp Error: ParamName  (0) 2014.02.26
printk : kernel log 설정  (0) 2013.11.19
[Linux] Top 명령어 사용법  (0) 2013.11.08
alsa-driver-1.0.25설치 시 fw_device_put error  (0) 2013.11.08
Posted by bluelimn

tar 분할압축 :

tar cvfz - /PATH/* | split -b 1m - tets.tar.gz

1m 단위로 분할압축


tar 압축 풀기 : 

cat test.tar.gz* | tar xvfz -




gzip 분할압축

tar cvf - /PATH/* | gzip - | split -b 1m - test.tar.gz


gzip 압축 풀기

cat test.tar.gz* | gzip -d - | tar xvf -


여기서 - 는 stdio 를 의미한다.


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by bluelimn

frameworks/compile/slang/slang_rs_export_foreach.cpp:247:23: error: variable ‘ParamName’ set but not used [-Werror=unused-but-set-variable]

cc1plus: all warnings being treated as errors


SOLUTION


Fix/Workaround:

frameworks/compile/slang/Android.mk

-local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter -Werror 

+local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by bluelimn

# cat /proc/sys/kernel/printk

6 4 1 7


=> 맨 처음 숫자가 Log Level을 의미함



#define KERN_EMERG "<0>" /* system is unusable */

#define KERN_ALERT "<1>" /* action must be taken immediately */

#define KERN_CRIT "<2>" /* critical conditions */

#define KERN_ERR "<3>" /* error conditions */

#define KERN_WARNING "<4>" /* warning conditions */

#define KERN_NOTICE "<5>" /* normal but significant condition */

#define KERN_INFO "<6>" /* informational */

#define KERN_DEBUG "<7>" /* debug-level messages */


echo 7 4 1 7 > /proc/sys/kernel/printk

로 설정하면 모든 printk 는 출력되며


echo 0 4 1 7 > /proc/sys/kernel/printk

로 설정하면 모든 printk 는 출력되지 않는다


출처 : KELP (Korea Embedded Linux Project)

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by bluelimn

[Linux] Top 명령어 사용법





시스템 사용량 확인(windows에서 작업관리자에서 보는 화면과 비슷한 기능)


[사용법]

$ top [옵션]


[화면 내용들]

top - 14:16:52 up 4 days,  5:25,  3 users,  load average: 0.00, 0.01, 0.05

Tasks: 131 total,   1 running, 130 sleeping,   0 stopped,   0 zombie

Cpu(s):  2.4%us,  0.3%sy,  0.0%ni, 97.0%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   8140668k total,  7900820k used,   239848k free,  3074544k buffers

Swap:  8349692k total,    13476k used,  8336216k free,  3792984k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND


각 라인별 내용 

top - 14:16:52 up 4 days,  5:25,  3 users,  load average: 0.00, 0.01, 0.05

현재 시간, uptime (서버 uptime), 현재 로그인 유저수 , 로드 에버리지 1분 5분 15분


 로드 에버리지(load average)란? 

 - 작업의 대기시간 , 값이 1이라면 1분동안 평균 1개의  프로세스가 대기상태임을 나타낸다.

   보통 5이면 서버가 부하를 받는다고 생각함, 10~15면 과부하


Tasks: 131 total,   1 running, 130 sleeping,   0 stopped,   0 zombie 

전체 프로세스 수, 현재 실행중인 프로세스, 유휴상태 프로세스, 정지상태 프로세스, 좀비 프로세스


Cpu(s):  2.4%us,  0.3%sy,  0.0%ni, 97.0%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st

사용자가 사용중인 CPU 사용률(us), 시스템이 사용하는 CPU 사용률(sy), NICE 정책에 의해 사용되는 CPU 사용률(ni), 사용되지 않은 CPU의 미사용률(id), 입출력 대기상태의 사용률(wa)


Mem:   8140668k total,  7900820k used,   239848k free,  3074544k buffers 

전체 물리적인 메모리, 사용중인 메모리(used), 사용되지 않는 여유 메모리(free), 버퍼된 메모리(buffers)


Swap:  8349692k total,    13476k used,  8336216k free,  3792984k cached 

전체 스왑 메모리, 사용중인 스왑 메모리, 남아있는 스왑메모리, 캐싱메모리


세부정보 필드명

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

    * PID : 프로세스 ID (PID)

    * USER : 프로세스를 실행시킨 사용자 ID

    * PRI : 프로세스의 우선순위 (priority)

    * NI : NICE 값. 일의 nice value값이다. 마이너스를 가지는 nice value는 우선순위가 높음.

    * VIRT : 가상 메모리의 사용량(SWAP+RES)

    * RES : 현재 페이지가 상주하고 있는 크기(Resident Size)

    * SHR : 분할된 페이지, 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합.

    * S : 프로세스의 상태 [ S(sleeping), R(running), W(swapped out process), Z(zombies) ]

    * %CPU : 프로세스가 사용하는 CPU의 사용율

    * %MEM : 프로세스가 사용하는 메모리의 사용율

    * COMMAND : 실행된 명령어

 

[명령 실행 후 사용하는 옵션들]

1 :  cpu 갯수별 사용량 보기

shift + m : 메모리 사용량이 큰 순서로 정령

shift + p : CPU 사용량이 큰 순서로 정렬

shift + t : 실행시간이 큰 순서로 정렬

k : 프로세스  kill  - k 입력 후 종료할 PID 입력 signal을 입력하라고 하면 kill signal인 9를 입력

c : 명령인자 표시/비표시

space bar : refresh

u : 입력한 유저의 프로세스만 표시 - which u



원하는 프로세스만 보기

top | grep “name” 


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by bluelimn

In file included from $PATH/alsa/alsa-driver-1.0.25/firewire/speakers.c:5:0:

$PATH/alsa/alsa-driver-1.0.25/firewire/../alsa-kernel/firewire/speakers.c: In function "fwspk_card_free":

$PATH/alsa/alsa-driver-1.0.25/firewire/../alsa-kernel/firewire/speakers.c:664:2: error: implicit declaration of function "fw_device_put" [-Werror=implicit-function-declaration]

$PATH/alsa/alsa-driver-1.0.25/firewire/../alsa-kernel/firewire/speakers.c: In function "fwspk_probe":

$PATH/alsa/alsa-driver-1.0.25/firewire/../alsa-kernel/firewire/speakers.c:721:2: error: implicit declaration of function "fw_device_get" [-Werror=implicit-function-declaration]

cc1: some warnings being treated as errors



solution : 

./configure --with-cards=hda-intel --with-moddir=updates

make

make install

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by bluelimn

bluelimn

달력

최근에 달린 댓글

최근에 받은 트래백

글보관함


티스토리 툴바