'Programming'에 해당되는 글 58건
- 2007.03.06 프로세스 갯수 알아내기.. 4
- 2007.02.28 xlib 에러 해결! 2
- 2007.02.27 gtk Thread 2
- 2007.02.26 X!!- key_grab 2
- 2007.02.22 libconfuse 에서 *** glibc detected *** double free or corruption
프로세스 갯수 알아내기..
Programming/C 2007. 3. 6. 16:16
config파일과 프로세스와의 연계?? 가 필요해서 혼자서 잡질.. joinc가니가 소스가 있긴하던데..(ps 만들기...) 걍안보고 해봤음................. 덧> 꺽쇠는 문자 망할놈의 태그땜에.. #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<sys/types.h> #include<dirent.h> #include<sys/stat.h> #include<fcntl.h> #include<string.h> #define FALSE 0 #define TRUE !FALSE #define PROCESS_NAME "myterm" //찾아낼 프로세스 이름 int CharDigit(char *data) //chk할 문자열을 받는다 다숫자가 마즈면 TRUE else FALSE { while(*data!='\0'){ if(!isdigit((int)*data)){ return FALSE; } data++; } return TRUE; } int main(void) { DIR *op_proc; struct dirent *rd_proc; int fd; char path[50]; char buf[50]; char *po; int ps_num=0; if((op_proc=opendir("/proc"))==NULL){ perror("디렉토리 열기가 실패했습니다!"); exit(2); } while((rd_proc=readdir(op_proc))!=NULL){ if(CharDigit(rd_proc->d_name)) { //숫자라면 memset(path,0,sizeof(path)); sprintf(path,"/proc/%s/status",rd_proc->d_name); if((fd=open(path,O_RDONLY))==-1){ perror("파일 열기 가 실패했습니다!"); continue; } read(fd,buf,sizeof(buf)); //파싱.. strtok(buf,"\n"); po=strchr(buf,(int)'\t'); po++; if(strcmp(po,PROCESS_NAME)==0) ps_num++; } } printf("프로세스 갯수:%d\n",ps_num); return 0; }쫌 고쳤는데 컴파일 잘될려나...
'Programming > C' 카테고리의 다른 글
c언어로 구현한 mp3 태그(id3v2) 지우기 (6) | 2007.05.06 |
---|---|
pointer 를 call by referance 하기 (6) | 2007.04.09 |
libconfuse 에서 *** glibc detected *** double free or corruption (0) | 2007.02.22 |
iconv 함수 사용법.?! (0) | 2006.12.15 |
C 포인터 기초 정리 (3) | 2006.03.06 |
xlib 에러 해결!
Programming/GTK+ 2007. 2. 28. 16:51
The program 'key_grab_ex' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadAccess (attempt to access private resource denied)'.
(Details: serial 11 error_code 10 request_code 33 minor_code 0)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
쓰래드랑 Xlib랑 같이 썼을경우에 나타남..
일단 쓰레드 사용이 재대로 되었나 확인할것...
또 키가 겹치지 않는지 확인하자!
window-manager,사용자 설정과 같이 겹치면 ..XXXXXXXXXX
전역단축키가 걸려있는데 그걸또 불러내게 하니까 위의 오류가 나서...
This probably reflects a bug in the program.
The error was 'BadAccess (attempt to access private resource denied)'.
(Details: serial 11 error_code 10 request_code 33 minor_code 0)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
쓰래드랑 Xlib랑 같이 썼을경우에 나타남..
일단 쓰레드 사용이 재대로 되었나 확인할것...
또 키가 겹치지 않는지 확인하자!
window-manager,사용자 설정과 같이 겹치면 ..XXXXXXXXXX
전역단축키가 걸려있는데 그걸또 불러내게 하니까 위의 오류가 나서...
'Programming > GTK+' 카테고리의 다른 글
윈도우 메니져 설정 무시하고 윈도우 만들기 (2) | 2007.06.14 |
---|---|
g_signal_connect의 폐해? (4) | 2007.03.30 |
gtk Thread (2) | 2007.02.27 |
vte를 이용한 간단한 터미널 (2) | 2007.01.14 |
libglade 컴파일법 (1) | 2006.12.14 |
gtk Thread
Programming/GTK+ 2007. 2. 27. 15:31
이번에 Thread가 먼지 확실히 알게된...
대충 하나의 프로그램의 흐름을제어 하는것..인거 같다..
fork는 같은 프로그램 이미지를 copy하는거랑 비교하면...
아 몰라 암튼
if(!g_thread_supported())
g_thread_init(NULL);
쓰레드가 지원하는지 확인하고 초기화시킨다 (역시 gtk는 함수만 봐도 딱 보인다니까..)
if(!g_thread_create((GThreadFunc)me_keys,window,FALSE,NULL))
perror("Thread ERROR");
쓰레드를 생성한다
gdk_threads_init(); //이것도 초기화
gdk_threads_enter();
gtk 함수들 ~
gdk_flush();
gdk_threads_leave();
을 랩핑한다
예시>
227 puts("Show");
228 gdk_threads_enter();
229 gtk_window_deiconify(GTK_WINDOW(widget));
230 gtk_window_present(GTK_WINDOW(widget));
231 gdk_flush();
232 gdk_threads_leave();
근데 이런식으로 해서 xlib랑 앞에 포스팅된 key_grap 할려니깐 자꾸 에러가 먹네..
Xlib: unexpected async reply (sequence~)
음 다시 찾아보니 gtk_thread_init를 빼먹었었구나..(현재 윗부분 수정)
가끔씩 맛이 가는거 빼곤 잘된다...
참고:
http://bebop.emstone.com/research/python/pygtk_faq/chapter20#id5
대충 하나의 프로그램의 흐름을제어 하는것..인거 같다..
fork는 같은 프로그램 이미지를 copy하는거랑 비교하면...
아 몰라 암튼
if(!g_thread_supported())
g_thread_init(NULL);
쓰레드가 지원하는지 확인하고 초기화시킨다 (역시 gtk는 함수만 봐도 딱 보인다니까..)
if(!g_thread_create((GThreadFunc)me_keys,window,FALSE,NULL))
perror("Thread ERROR");
쓰레드를 생성한다
gdk_threads_init(); //이것도 초기화
gdk_threads_enter();
gtk 함수들 ~
gdk_flush();
gdk_threads_leave();
을 랩핑한다
예시>
227 puts("Show");
228 gdk_threads_enter();
229 gtk_window_deiconify(GTK_WINDOW(widget));
230 gtk_window_present(GTK_WINDOW(widget));
231 gdk_flush();
232 gdk_threads_leave();
근데 이런식으로 해서 xlib랑 앞에 포스팅된 key_grap 할려니깐 자꾸 에러가 먹네..
Xlib: unexpected async reply (sequence~)
음 다시 찾아보니 gtk_thread_init를 빼먹었었구나..(현재 윗부분 수정)
가끔씩 맛이 가는거 빼곤 잘된다...
참고:
http://bebop.emstone.com/research/python/pygtk_faq/chapter20#id5
'Programming > GTK+' 카테고리의 다른 글
g_signal_connect의 폐해? (4) | 2007.03.30 |
---|---|
xlib 에러 해결! (2) | 2007.02.28 |
vte를 이용한 간단한 터미널 (2) | 2007.01.14 |
libglade 컴파일법 (1) | 2006.12.14 |
TODAY.... 삽질 DAY (6) | 2006.08.09 |
X!!- key_grab
Programming 2007. 2. 26. 00:49
X-윈도우에서 전역단축키 사용하는 방법..
#include \
#include
#include
#include
#include
int main(int argc, char *argv[])
{
Display *d;
Window x11_win;
KeyCode get_key= 0; //init?
KeySym key_code;
XEvent key_press;
if (argc < 3) {
fprintf(stderr,"Useage\nEX>: %s Alt_L \"/bin/bash\"\n", argv[0]);
exit(1);
}
d = XOpenDisplay(""); //x_display(screen) 생성
x11_win = DefaultRootWindow(d); //ID를 윈도에 돌려줌
//이거 실패했을때 가정해서 플그래밍 하래
key_code = XStringToKeysym(argv[1]); //key를 받아(xev value)
get_key = XKeysymToKeycode(d, key_code); //key_code 값으로 변환
XGrabKey(d, get_key, AnyModifier, x11_win,
True, GrabModeAsync, GrabModeAsync); //key_grab
while (1) { //키가 눌릴때까지 loop,winapi의 그것과 비슷한듯
XNextEvent(d, &key_press);
switch(key_press.type) {
case KeyRelease:
system(argv[2]); //run!
break;
default:
break;
}
}
XCloseDisplay(d);
}
구글링 해서 찾은 소스 좀 고침.-
#include \
#include
#include
#include
#include
int main(int argc, char *argv[])
{
Display *d;
Window x11_win;
KeyCode get_key= 0; //init?
KeySym key_code;
XEvent key_press;
if (argc < 3) {
fprintf(stderr,"Useage\nEX>: %s Alt_L \"/bin/bash\"\n", argv[0]);
exit(1);
}
d = XOpenDisplay(""); //x_display(screen) 생성
x11_win = DefaultRootWindow(d); //ID를 윈도에 돌려줌
//이거 실패했을때 가정해서 플그래밍 하래
key_code = XStringToKeysym(argv[1]); //key를 받아(xev value)
get_key = XKeysymToKeycode(d, key_code); //key_code 값으로 변환
XGrabKey(d, get_key, AnyModifier, x11_win,
True, GrabModeAsync, GrabModeAsync); //key_grab
while (1) { //키가 눌릴때까지 loop,winapi의 그것과 비슷한듯
XNextEvent(d, &key_press);
switch(key_press.type) {
case KeyRelease:
system(argv[2]); //run!
break;
default:
break;
}
}
XCloseDisplay(d);
}
구글링 해서 찾은 소스 좀 고침.-
'Programming' 카테고리의 다른 글
쉘스크립트 하는데 (7) | 2008.02.04 |
---|---|
간만에 포스팅.. 소스 고치기! (2) | 2007.10.17 |
Nanika를 써보고 나는 생각들 (5) | 2007.06.16 |
c로 cp 프로그램 작성 (5) | 2006.05.14 |
getchar 의 리턴형은.. (4) | 2006.04.02 |
libconfuse 에서 *** glibc detected *** double free or corruption
Programming/C 2007. 2. 22. 16:16
CFG_SIMPLE_STR 이런식으로 했을시에
저런 에러가 난다면
먼저 문자열을 넣어 줬는지 체크한다
초기값은 NULL이 할당이 되어 있어야한다
그리고 libconfuse에서 값을 재대로 못읽어돌경우가 있는데
그 이유중하나가 큰따옴표를 빼먹어서 일 가능성도 있다
데이터가 없더라도 config파일에 큰쌍따옴표가 들어가게 해야한다
저런 에러가 난다면
먼저 문자열을 넣어 줬는지 체크한다
초기값은 NULL이 할당이 되어 있어야한다
그리고 libconfuse에서 값을 재대로 못읽어돌경우가 있는데
그 이유중하나가 큰따옴표를 빼먹어서 일 가능성도 있다
데이터가 없더라도 config파일에 큰쌍따옴표가 들어가게 해야한다
'Programming > C' 카테고리의 다른 글
c언어로 구현한 mp3 태그(id3v2) 지우기 (6) | 2007.05.06 |
---|---|
pointer 를 call by referance 하기 (6) | 2007.04.09 |
프로세스 갯수 알아내기.. (4) | 2007.03.06 |
iconv 함수 사용법.?! (0) | 2006.12.15 |
C 포인터 기초 정리 (3) | 2006.03.06 |