Linux2008. 12. 8. 16:20

#include <unistd.h>

int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg,  ..., char * const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);


The  functions  execlp()  and execvp() will duplicate the actions of the shell in searching for an executable file if
the specified filename does not contain a slash (/) character.  The search path is the path specified in the environ-
ment  by the PATH variable.  If this variable isn’t specified, the default path ‘‘:/bin:/usr/bin’’ is used.  In addi-
tion, certain errors are treated specially.

[출처 : man page]

execl의 경우에는 path가 들어 가는데 arg에서 문제가 생긴다.




execl은 잠시 잊고 잠시 C언어로 돌아가서 main()의 프로토 타입을 생각해보자
 int void(int argc, char **argv)
그리고 argv[0] argv[1]의 내용을 떠올려 보자
argv[0]은 실행한 파일의 이름이 argv[1] 부터 인자가 넘어 오지 않았던가!




다시 execl로 돌아와서
int execl(const char *path, const char *arg, ...);
path에서는 파일 이름이 포함 된 경로를 적어주고, arg[0]에는 파일 이름 arg[1] 부터는 인자를 넘겨 주면 된다.


간단한 예를 들자면
 execl("/bin/ls","ls","-al",0);
로 실행을 하면된다.

마지막의 0은 '\0' == NULL 이다.


[참고 : http://kldp.org/node/1548]
Posted by 구차니
Linux2008. 12. 8. 15:56
리눅스에서 프로그램을 실행 시키는 방법은
fork() / exec() 로 하는 방법과 system() 으로 하는 방법이 있다고 한다.
(내가 직접해본게 아니니 발뺌하기 모드 -.-v)

아무튼 fork()의 경우 parent 의 메모리를 복사해서(COW - Copy On Write) 사용하므로 메모리의 낭비가 생기는데,
이런 이유로 메모리가 넉넉해 보임에도
"fork 시에 ENOMEM 을 뱉어 내고 실행을 못한다"면 fork 대신에 vfork를 사용하면 된다.


어플리케이션 서브프로세스를 생성할때 메모리 사용량 최대로 줄이기
Greg Nakhimovsky, 2006년 5월

Fork의 퍼포먼스
...
fork()exec() 에 뒤따라 바로 살행되는 fork/exec 모델의 단점을 다루기 위해 버클리 버젼의 유닉스(BDS)는 1980년대 초반에 vfork() 시스템 콜을 내놓았습니다. vfork(2)부모 프로세스를 자식 프로세스에 카피하지 않습니다. 두 프로세스가 모두 부모의 가상 주소 공간을 공유 합니다; 부모 프로세스는 자식 프로세스가 종료 되거나 exec() 를 호출할때 까지 정지 상태로 들어 갑니다.
...
오랜 시간이 지난후에 멀티쓰레딩(MT)이 가능해 지고 많이 사용되면서 vfork() 가 어플리케이션이 여러개의 쓰레드를 가지고 있을때 새로운 문제를 일으킬 수 있음이 밝혀 졌습니다: 데드락.

메모리 overcommit: 솔라리스 vs 다른 운영체제들

몇몇 운영체제 (리눅스, IBM AIX, HP-UX 같은) 들은 memory overcommit 이라는 기능을 가지고 있습니다.( lazy swap allocation 이라고도 불림) memory overcommit 모드에서 malloc()스왑스페이스를 예약하지 않고 시스템에 충분한 VM이 있든 없든 항상 NULL 이 아닌 포인터를 리턴 합니다.

...

리눅스 커널 버젼 2.6과 그후에 버젼에서는 이론적으로 커널의 동작을 수정할 수 있는 방법이 존재 합니다. 그러므로 overcommit memory 가 발생하지 않을 것입니다. 이것은 strict overcommit modesysctl을 통해 조정함으로써 가능합니다:

sysctl -w vm.overcommit_memory=2

혹은 동일한 의미를 가지고 있는 vm.overcommit_memory=2/etc/sysctl.conf 에 삽입합니다.



[출처 : http://kr.sun.com/developers/solaris/techdocs/subprocess.html]

 Memory overcommit is a Linux kernel feature that lets applications allocate more memory than is actually available. The idea behind this feature is that some applications allocate large amounts of memory "just in case", but never actually use it. Thus, memory overcommit allows you to run more applications than actually fit in your memory, provided the applications don't actually use the memory they've allocated. If they do, then the kernel terminates the application.

[출처 : http://www.gnu.org/software/gnusound/Documentation/ar01s05.html]



Posted by 구차니
embeded/80512008. 12. 7. 04:09
C51 Evaluation Tools
  • You may not use the Evaluation Version of the µVision IDE/Debugger to create commercial products.
  • The 8051 compiler, assembler, linker, and debugger are limited to 2 Kbytes of object code. Source code may be of any size.
  • Programs that generate more than 2 Kbytes of object code will not compile, assemble, or link.
  • The debugger supports programs that are 2 Kbytes or smaller.
  • The startup code generated includes LJMPs. Code generated cannot be used in single-chip devices that support 2 Kbytes or less of program space.
  • Programs start at offset 0x0800. Programs generated with the evaluation software may not be programmed into single-chip devices with less than 2 Kbytes of on-chip ROM.
  • No hardware support for multiple DPTR registers is provided.
  • No support for floating-point arithmetic and no support for user libraries is provided.
  • No support for in-line assembly using #pragma ASM.
  • The following components which are present in the PK51 Full Version are not included in the Evaluation Version: Linker for Code Banking, Library Manager, and RTX51 Tiny Real-time Operating System.

이름, 주소 , 전화 번호, 메일 정도의 개인 정보를 요구 하고 Evaluation 버전을 다운 받을 수 있다.
위에 적힌 대로 소스 사이즈는 상관없지만 object 파일은 2K까지만 제한이 되고, 부가적으로
2K 미만 메모리를 가진 칩용으로는 생성이 되지 않는다.(프로그램 시작 offset이 0x0800 으로 고정)
그리고 부동 소수점 / 사용자 라이브러리는 지원되지 않고 #pragma를 사용한 in-line 어셈블리가 지원되지 않는다.

일단 메모리가 4K 정도라면 2K 까지 프로그램까지 작성이 가능하다 라고 봐야 하나..
[링크 : http://www.keil.com/demo/limits.asp]

[다운링크 : http://www.keil.com/demo/]

'embeded > 8051' 카테고리의 다른 글

Keil compiler - Error : Segment too large  (0) 2009.04.13
8051 TIMER 에 대하여  (0) 2008.12.18
KEIL Cx51 - Warning L5: CODE SPACE MEMORY OVERLAP  (0) 2008.12.01
8051에 관하여  (0) 2008.11.28
KEIL Cx51 - 변수형  (0) 2008.11.25
Posted by 구차니
대한민국은 MS에 점령을 당했고, 이로 인해서 OS를 MS windows가 아닌것으로 선택할때의
손실이 다른것을 선택했을때 보다 크다. 그런 이유로 어쩔수 없이(게임이라고 굳이 표현은 안하겠어!) Windows를 OS로
선택을 해야만 한다. 그럼 다른 부분에서 가격을 줄여 줄 수 있는 방법을 찾아 보는게 현명하다는 판단이 선다.


그런 이유로 MS Windows에서 돌아가는 무료 프로그램을 찾는 것이고,
부가적으로는 Windows가 아닌 다른 OS에서도 쓸만한 레벨의 무료 프로그램을 찾는 것이다.

일단 현재 까지 사용중인 무료 프로그램 / 가벼운 프로그램의 목록은 다음과 같다.

1. Foxit Reader / Acrobat reader 대체
2. OpenOffice / MS Office 대체
3. FireFox / Internet Explorer 대체
4. WinMerge / Araxis Merge 대체
5. AcroEdit / 메모장 대체(?!)
6. GIMP / PhotoShop 대체
7. 빵집 / 알집 대체


이 중에서 굵게 표시된 것은 Linux 에서도 사용이 가능한 것이니
OS가 MS Windows가 아니더라도 사용이 가능한 완전 무료 환경을 구축하는데
조금은 더 도움이 될 수 있다.


Linux + AIGLX + Open Office + GIMP 조합이면
MS Windows VISTA + MS Office + Adobe Photoshop을 대체 가능하다.

MS Windows 대략 30
MS Office 2007 대략 30
Photoshop CS3 대략 80

물론 하드웨어 가격이 줄어서 OS만도 못한 가격이 되었지만, 반대로 너무나 비싸진 프로그램의 가격은 정말
너무나 먼 당신이다 ㅠ.ㅠ

Posted by 구차니
개소리 왈왈2008. 12. 5. 12:24

옥션
옥션 사태에서 일부가 유출되면 5만원, 아이디 주소 전화번호 주민등록번호 계좌번호 까지 유출되면 10만원을
배상하도록 했다는데.. 문제는 업체측에서 받아들이지 않고 법정 고고싱을 외쳤다고 하는데 있다.


머 결론은 배불리는건 변호사일 뿐이고~
국민은 개만도 못한 취급을 받는 것일 뿐이고~

난 엄마가 보고 싶을뿐이야 ㅠ.ㅠ(응?)


[뉴스 : http://media.daum.net/economic/consumer/view.html?cateid=100014&newsid=20081205100204669&p=inews24]



수신료 200% 인상(조중동 스타일 헤드라인)


그리고 뉴스를 보다 보니..

KBS의 공영성을 늘리는 수단으로, 광고 비율을 줄이고 재원 확충을 위해

수신료를 2500원에서 5000원까지 올리고, 반발 최소화를 위해 단계적으로 올리겠다는데

솔찍히 5000원 달라면 줄 수 있겠지만,

실질적으로 일주일에 tv 보는 시간 다 합쳐도 1시간도 안되는 나로서는 억울할 뿐이고!

계산해보면 200% 증가인데 이럴때는 액수를 줄여 보일려고 5000원으로 인상이라고

쓰는 언론은 웃기지도 않을뿐이라서

에이 CPerl~ TV없애고 한전 소환해서 TV없다고 수신료 못 낸다고 해버리던가 해야지

드러버서 못살겠다!!


잡설 : DMB나 PC용 TV 수신카드도 수신료 물리는거 아냐?
        귀찮으니 PC 있으면 수신료 내야 한다 라고 하는 건 아니겠지?


[뉴스 : http://www.pdjournal.com/news/articleView.html?idxno=19166]


Posted by 구차니
개소리 왈왈2008. 12. 5. 10:38


내가 사용하는 홀씨의 홈페이지에 지도 업데이트를 위해 로그인을 하는데
파이어폭스로 했더니 저런 만행을 저지른다.

님, 안녕하세요!



어라라 이거 초딩체로 바뀐건가? 하고 순간 흠칫하다가
IE로 접속하니 제대로 나온다.. OTL

'개소리 왈왈' 카테고리의 다른 글

내일 니일  (2) 2008.12.11
신속하고 저렴한 인생 - 옥션 , TV 수신료  (0) 2008.12.05
최초로 일일 100hit 돌파!  (6) 2008.12.03
LGT->SKT 번호이동  (4) 2008.12.01
친구의 절규로 시작한 월요일 - 12월 1일  (0) 2008.12.01
Posted by 구차니
아이디어!2008. 12. 4. 13:17
이미 있을려나?
얼리 어답터의 재력은 무궁무진하기에 이것저것 사고
한달이내에 팔고 그 차액을 보태서 다른걸 산다고 하는데..

그런걸 못하는 평범한 사람들을 위한 체험관이라고 해야 하나 샾이라고 해야 하나..

일단 기업들 협찬도 받고(광고 수익이라고 해야 하나?)
입장 하는 사람들은 하루에 얼마 받거나
시간당 얼마 받고


새로운 상품이 전혀 나오지 않게 될리는 없으니
그런것들을 광고와 결합시켜 (나쁘게 말하면 대기업에 기생) 체험이라는 명목하게
돈벌이도 할 수 있고 웬지 그럴싸 한데?!


Posted by 구차니

make를 하는데 에러가 발생해서 컴파일 진행을 못하길래 먼가 해서 검색을 해봤더니

1. Are you building over an NFS volume?

2. you could do

find . -type f | xargs -n 5 touch
make clean
make

라는 글이 나왔다 그래서 머가 잘못되었나 파일을 검색해봤더니

-rwxr--r-- 1 morpheuz dev 129616 Jan  2  2009 mainmenu.c

참고로 오늘은 2008년 12월 3일이다..
노트북에서 작업을 했는데 노트북 배터리를 뽑아 놓고 방치하는 바람에 시간이 틀어져 있었나 보다.

아무튼 make의 경우에는 시간에 민감하게 작동하므로 반드시 시간을 동기화 시켜야 한다.

[출처 : http://www.unix.com/sun-solaris/45737-make-2-warning-clock-skew-detected-your-build-may-incomplete.html]
Posted by 구차니
개소리 왈왈2008. 12. 3. 00:27
왜 이렇게 갑자기 많은 사람이 새벽에 많이 온지는 모르겠지만
아무튼 100명을 돌파 했다.

회사 가서 방문자 수가 70을 하고 잇었는데.. 티스토리 자체 문제일려나.. 아니면
의외의 검색 엔진의 선전일려나..

아무튼! 기념적인 today 100 hit!!



일별 방문자 수
2008/12/02 132

Posted by 구차니
폴더 비교 / 파일 비교가 되는 윈도우용 GPL 라이센스의 비교 프로그램입니다.
Araxis가 좋긴하지만.. 거금이다 보니 무료 프로그램을 찾게 되었는데
acroedit에 들어 있는 acrodiff는 폴더 비교는 아직 지원하지 않아서 acroedit 공식홈페이지에서
글들을 찾아 보니 WinMerge를 추천하는 글이 있어서 따라가 보았습니다.


■ file 비교

■ folder 비교


일단 비교 대상은 평소에 사용하던 Araxis Merge 입니다.

장점 : 무료(GPL 라이센스)이다.
         Araxis 대비 Syntax Highlight가 지원되어 좋다.
         Syntax를 추적해서 비교 하므로 Araxis 보다는 문법 차이를 비교 하기 편하다.
         Context Menu 지원한다.(Araxis도 지원함)
         폴더 비교를 지원한다(Acrodiff 대비)
         설치프로그램 용량이 적다(5MB, Araxis 60MB 이상)

단점 : Araxis 스타일로 사용하기 위해서는 상당한 환경 설정이 필요하다.
             - Folder 비교 옵션은 Araxis는 트리 구조로 나오지만 WinMerge는 리스트 형식으로 나와서
                폴더 단위 비교는 조금 불편하다
             - Folder 비교시 Araxis는 업데이트를 실시간으로 하지만 WinMerge는 한번에 다 비교하고 출력하므로
                비교하는데 걸리는 체감시간이 더 길게 느껴진다.
             - Folder 비교시 비교 결과에서만 차이점을 볼 수 있다. (Araxis는 폴더 비교시 파일에 색상이 칠해짐)
             - 우측의 위치 비교는 두개를 합쳐 놓아서 공간을 더 차치 하는 느낌이 든다.
        비교 대상이 없는 파일일 경우 그냥 메모장으로 실행된다.
             - 외부 편집기 설정가능하지만 사용자에 따라 판단이 엇갈릴 수 있음

[WinMerge : http://winmerge.org/]
[WinMerge Portable : http://portableapps.com/apps/utilities/winmerge_portable]

Araxis와 유사하게 사용하기 위한 설정은 아래의 더보기를 클릭해주세요!
Posted by 구차니