프로그래밍 QnA

sadtale의 이미지

타이머 사용 시 sleep / usleep / nanosleep 문제..

인텔 아톰 프로세서를 사용하는 보드에 우분투 리눅스를 올려 사용하고 있습니다.

timer_create 함수로 RTC 타이머를 하나 돌리고 있습니다...

그런데 이렇게 되니 main 에서 sleep 종류의 함수가 안먹힙니다..
타이머 시그널이 sleep 도 깨워버리는거죠..

예를 들어 타이머를 10ms 로 설정해 놓고 돌리면, sleep(1) 을 줘도
sleep 도 10ms 마다 깨어나 버립니다.

물론 10ms 보다 짧게 usleep 을 주면 제대로 동작을 하구요..

헌데 별도의 thread 를 하나 더 만들어서 그 thread 내에서 sleep 을 주면 그건 멀쩡하게 먹히더군요..

별도 thread 를 만들지 않고 이 문제를 해결할 방법이 없을까요?

sunsung의 이미지

모니터링 스크립트를 하나 만들었는데 그냥 실행하면 괜잖은데 cron등록하면 문제가 생깁니다...

가끔 프로세스가 죽거나 defunct가 생기는 경우가 있어서 문제가 발생하면

메일로 메시지를 보내게끔 간단한 프로세스 모니터링 쉘을 만들었습니다.

sh mon.sh 실행하면 제대로 메일이 들어오는데 cron에 등록시켜서 1분마다 돌아가게끔 해뒀는데

이상하게 cron에 등록해두면 제대로 메일이 발송되지 않습니다.

제가 잘못 작성한건지... cron에 등록할 쉘은 다른식으로 해야되는지 잘 모르겠네요

조잡한 스크립트지만 전문가분들의 조언 부탁드립니다.
---------------------------------------------
#!/bin/bash
#daemon PID
ps -C processname > /root/processname_ps.log

KR_PID=`ps -C processname -o pid= | head -n1`
DEFUNCT_PID=`grep defunct /root/processname_ps.log | cut -f 1 -d " " | head -n1`

mandugukbap의 이미지

PPPoE 헤더가 포함된 pcap 데이터에서 PPPoE 헤더를 제거하고 클린 pcap 데이터로 만드는 방법이 있을까요?

제목 그대로입니다.

libpcap을 이용해 프로그래밍 하는 방법 말고 tcpdump같은 툴을 이용해 PPPoE가 포함된 데이터를 일반적인 ethernet 데이터로 재저장하고 싶습니다.

경험 있으신 분 조언 부탁 드립니다.

mhlee03의 이미지

double type memory에 있는 것을 그대로 화일에 저장하기 ?


C++에서
double type의 변수에 저장되어 있는 것을 화일에 저장하려고 합니다. 단 아무런 정보를 잃어버리지 않고요. 16진수로 저장하면 되냐요. ?

컴퓨터 메모리 한계로 정보를 화일에 적어 놓았다가 읽어서
다시 계산을 해야 합니다. 정보를 잃어버리면 안됩니다.

고수님들의 조언을 기대합니다.

kwonsu의 이미지

xwindow에서 실행되고 있는 프로세스 선택방법에 관하여 질문드립니다.

안녕하십니까. xwindow에서 qiv, xmms 등을 실행해두고 이 프로세스를 선택하여 활성화 시키는 방법이 궁금합니다.

마우스로 화면을 건드리는것이 아닌 콘솔에서 명령어로 한다든지 아나면 특정 라이브러리를 이용한다던지 하는 방법이 궁금합니다.

예를 들어 그림을 화면에 띄워놓은 후 xmms를 실행하고 xmms를 숨기고 난 후 xmms를 활설화 시켜 선택할 수 있는 방법이 궁금합니다.

이러한 기능이 있는 명령어 혹은 참고할만한 예제소스코드등등 부탁드립니다.

감사합니다.

jjami1234의 이미지

apic_timer_interrupt 에서 하는 일이 무엇인지 궁금합니다

로컬 타이머 레지스터가 걸리면 (SMP 모드 설정을 하지 않고서)

리눅스 커널에서 어떠한 핸들러가 실행되고 그 핸들러가 무슨일을 하는지

알려주세요 ㅠㅠ 부탁 드립니다.

soulcage의 이미지

fscanf 이용 데이터 읽을때 간단한 질문입니다

안녕하세요
C에서 fscanf로 데이터를 읽어보려고 하는데 초보라서 조금 어려운점이 있네요..
제가 읽고 싶은 데이터는 9.2f 형태의 칼럼 4개로 이루어진 텍스트 파일인데요
예를 들면,

094734.93 104447.15 094730.62 104531.99

이런 식의 데이터들이에요.

그런데 문제는 제가 이 데이터들을 읽을 때 세 등분으로 쪼개서 읽고 싶거든요..
첫번째 데이터를 예로들면 09 / 47 / 34.93 이렇게 세 파트루요
이렇게 읽고 싶을 때 어떤 함수를 써야할지 감이 잡히지 않아 이렇게 포스트를 올리게 되었네요
혹시 읽을때,

int i1, i2, i3, i4, i5, i6, i7, i8;
float f1, f2, f3, f4;
fscanf(filename, "%2d%2d%5.2f %2d%2d%5.2f %2d%2d%5.2f %2d%2d%5.2f", i1, i2, f1, i3, i4, f2, i5, i6, f3, i7, i8, f4);

이렇게 읽을수는 없는 것인가요?ㅠ

kleeck의 이미지

Embedded Linux에서 USB AutoMount 하기 위하여


안녕하세요

현재 임베디드 보드에서 usb를 꼽았을 경우 자동으로 마운트하여 사용을 해야 하는데요..

hotplug를 통해서 usb장치가 인식은 됩니다. 그 다음이 mount를 해야 하는데 하지를 못하네요

그렇다고 소스레벨에서 강제로 /dev/sdb 뭐 이런식으로 지정해 줄수는 없는 노릇이구요 왜냐면 usb 마운트를 한 상태에서

강제로 뺏다가 다시 꼽았을 경우에는 /dev/sdc로 바뀌어 버리기 때문입니다.

아.. 이거 진짜 어떻게 해야 하나요? 인터넷에 나와 있는 방법대로 다 해보았습니다만 않됩니다.

여전히 hotplug만 인식하고..

답답한 마음에 혹시 이런일 당해보신 분~

해결책좀 알려주세요

kieslv의 이미지

gadget driver를 디바이스 노드를 만들어서 직접 app에서 open()으로 접근이 가능 한지요?

제가 만든 usb gadget driver를 직접 app에서 open() 으로 접근하고 싶습니다.

드라이버 안에서 cdev_init 이나 register_chrdev를 해주고 있는데,

/dev 디렉토리에 노드가 생성되지 않고 강제로 Major 번호를 맞추어서 생성해도 app에서는 접근할 수 없습니다.

사용자 제작 usb gadget driver를 접근하여 데이터를 주고 받을수 있는 방법이 있는지요?

serial로 등록하여 tty 통신을 해야 하는 건지, 감이 잡히지 않아 문의드립니다.

조언 부탁드리겠습니다.

neohwang의 이미지

[완료] [MS Windows Program] printf 포맷인 %I64d 와 %*I64d 관련 도움 요청

우선 MS관련 질문은 devpia에 하는 것이 적절하다는 것을 알고있지만,
그 놈의 ActiveX 설치하기가 싫어서 여기에 질문을 드립니다.
(여기에도 Windows 프로그램 하시는 분들이 많은 것 같아서요)

msdn에서 어떤 소스를 보다보니.. printf에서 %*I64d 로 포맷팅이 되어있더군요.
(중요한 것은 "*" 이 들어갔다는 것)

이 별표를 빼고 했더니만, 전혀 다른 출력결과물을 보여주네요..
이 포맷에 대하여 설명된 답변이나.. 아니면 좋은 참고 링크 좀 알려주세요.

그럼.. 미리 감사드립니다.

페이지

프로그래밍 QnA 구독하기