call_usermodehelper 로 GUI 실행
얼마전 계속 삽질하던 내용을 도움이 되길 바라는 마음으로 올립니다.
커널 모드에서 call_usermodehelper로GUI 를 실행시키면 실행이 안되더군요.
제 시스템(우분투 9.04) 에서만 그런지는 모르겠지만 call_usermodehelper 의 환경변수 인자에 특정값을
입력하면 제대로 실행이 되더군요.
int main(int argc, char **argv, char **envp)
{
while(*envp)
printf("%s\n", *envp++);
return 0;
}
위와 같이 프로그램이 하면 다음과 같은 내용들이 출력됩니다.
ORBIT_SOCKETDIR=/tmp/orbit-root
SSH_AGENT_PID=3211
GPG_AGENT_INFO=/tmp/seahorse-qMEQvX/S.gpg-agent:3241:1
TERM=xterm
SHELL=/bin/bash
XDG_SESSION_COOKIE=ff1483f384f2a36c51a29e9e4ca790fb-1286501584.692051-1577861971
GTK_RC_FILES=/etc/gtk/gtkrc:/root/.gtkrc-1.2-gnome2
WINDOWID=56623676
GTK_MODULES=canberra-gtk-module
USER=root
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.svgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;3
아시겠지만 그냥 환경변수 찍은겁니다.
물론 더 많은 내용이 있지만 생략 하겠습니다. 왜냐면 이 내용들이 전부 필요한게 아니더군요.
제가 테스트 한바에 의하면
DISPLAY=:0.0
이것만 환경변수에 입력하고 call_usermodehelper()를 실행해도 잘 되더라고요.
제가 듀얼 모니터를 써서 그런건지 아니면 이건 당연히 해줘야 하는건데 몰랐던 건지는 모르겠지만
꽤 고생했던 내용이고 또 저와 같은 고민을 하시는 분들이 있을듯 싶어 올립니다.
더 좋은 방법이 있으신 분은 주저 하지마시고 리플을.....(--)(__)
댓글 달기