프로그래밍 QnA

bkc625의 이미지

yacc 와 lex 질문 드립니다.

안녕하세요

이번에 pcap 소스 분석 때문에 yacc 와 lex 를 좀 보고 있는데 이해하기가 참 난해 하네요 ㅠ

인터넷에 돌아다니는 계산기 소스를 가지고 와서 vi 붙여 넣고 번호를 붙여 놨습니다.

가져온 사이트는 http://wiki.kldp.org/wiki.php/LinuxdocSgml/Lex_Yacc-KLDP 입니다.

제가 라인 별로 해석을 해볼테니 틀렸으면 수정 부탁드리고 해설 부탁 드립니다.

간단하지만 다른분들에게도 도움이 되길 바랍니다. ㅠㅠ

fensy의 이미지

Integer Overflow of Allocation Size 문제 관련 질문입니다

안녕하세요.. 이번에 코드소나로 정적테스트를 하고 있는데

궁금사항이 있어서 질문드립니다.

소스에서 gcc library로 제공되는 시스템 queue를 사용하는데요

CtrlMsgQueue = (Queue_t *)malloc(sizeof(Queue_t)*QueueSize);

이런식으로 메모리 alloc을 하는데 Integer Overflow of Allocation Size 문제가 띵 튀어나오네요..

QueueSize가 전역변수로 선언되어 있는넘인데.. 이걸 코드소나에서 인식을 못해서 그런건지..-_-;;

강제적으로 값을 집어넣으면 에러는 사라지는거 같으나.. 영 찝찝하고, 저 코드 돌기전에

Allocation Size를 체크할수 있는 api같은것이 있을까요?

fhdaos10의 이미지

유닉스에서 split명령어를 직접 C코드로 짤려면 어떻게 짜야할까요?

학교 프로젝트로 나온건데...

split가 기본적으로 파일을 쪼개는 거잖아요

그래서 제가 생각한거는 일단 쪼개고자하는 파일을 open해서 lseek으로 쪼개고자하는 크기만큼 포인터로 이동한다음

새로운 파일이름으로 open하면 새 파일이 하나 만들어지니까 이 곳에 write하면 되지 않을까 생각해봤는데요...

제가 생각하는 개념이 맞는지 모르겠네요;;

두번째로 궁금한 것은 만약 제가 생각하는 개념이 맞다면

만약 mp3파일을 쪼갠다고 치면 쪼개진 파일의 자료타입은 도대체 뭔가요? int형인가요? char형인가요?

쪼개고난 뒤 보관할 buffer를 만들어야하는데 이 버퍼를 int형으로 해야할지 char형으로 해야할지 감이 안옵니다..

prgbmk의 이미지

리눅스 Scheduling 함수 sched_setscheduler(0, SCHED_BATCH, &param) 함수가 안됩니다.

스케쥴링 세팅 관련 소스를 짜고있는데

sched.h헤더파일에는 분명히 SCHED_BATCH가 Define되어있는데

막상 이거를 사용자 프로그램에서 쓰고 컴파일을 하려니까 안되네요

if(sched_setscheduler(0, SCHED_FIFO, &param)!=0)이런식인데

error: ‘SCHED_BATCH’ undeclared (first use in this function)
이런식으로 에러가납니다.
헤더파일도 sched.h 추가했구요.

원래 못쓰는 시스템콜 함수인가요? 조언 부탁드립니다 ㅠㅠ

ShaYEL의 이미지

구조체의 멤버변수를 바꾸는 함수 질문 다시 올립니다.

제가 KLDP를 보게된지가 얼마 안되서 이래도 되는건지는 잘 모르겠는데요, 낮에 올린 글이 좀 난잡하게 되어버린것 같아서 다시 글을 올립니다. 도움 부탁드리겠습니다..

"input.txt" 파일에는 "string1 string2"가 씌어져 있다고 생각하면 될 것 같습니다. new_structure 함수를 이용해서 string1과 string2를 읽어들여 각각 person이라는 구조체의 member1과 member2에 집어넣도록 하고 싶은데, 코드를 실행시켜도 person 구조체가 텅 비어있는채로 남아있습니다.

제가 짠 코드는 대충 이렇습니다

bkc625의 이미지

yacc 와 lex 에 대해서 공부하고 싶습니다. 도와주세요 ㅠ

안녕하세요

이번에 pcap 라이브러리를 보다가 BPF 에 대해서 조사하게 되었습니다.

소스코드를 보던 중 yacc 와 lex 를 이용해서 c 파일을 만들었더라구요..

yacc 와 lex 에 대해선 아무것도 몰라 이래저래 검색하던중

국내 유일한 서적이라고 하는 오라일리에서 나온 책을 검색해봤는데.. 혹평 이더라구요..

배경설명도 부실하고 예제의 결과물도 없고 심지어 예제도 틀린것이 있다고..

회사일이라 빨리 습득을 해서 진행을 해야하는데 마냥 시간이 주어지지도 않아서..

여러분들이 알고 계신 좋은 사이트나 도움 될만한 것들을 부탁드립니다. ㅠ

뎃글이 많아지고 추후 어떤이들이 yacc lex 라는 키워드로 검색했을때 이 글이 나올테고 저 처럼 헤메시는 분들에게 도움이 되길 바랍니다. :)

jokercha의 이미지

리눅스 Traffic Control 질문이요 ㅠㅠㅠ

며칠전에도 질문했었는데 답변이 없어서 다시 질문 올려요 ㅠㅠㅠㅠ

이번에 실험을 하나 하려하는데

리눅스 TC나 TCNG를 이용해서 ingress bandwidth를 제한해서 제가 만든 프로그램이 얼마나 효율적인가를 보려고 하는데요

구글링등해서 스스로 해봤는데 잘 안되네요...

컨트롤이 아에 안된다던지 500kbps를 만족해줘야 하는데 아에 말도 안되는 속도로 제한이 걸린다던지...

어떻게 해야할까요.. 도움이 필요합니다..

#!/bin/bash

TC=/sbin/tc
DEV=eth0
MAX=1

# clear all queuing on the device.
${TC} qdisc del dev ${DEV} root 2> /dev/null > /dev/null
${TC} qdisc del dev ${DEV} ingress 2> /dev/null > /dev/null

zzang3757의 이미지

epoll 엣지 트리거 관련 질문 드립니다..

여러 문서를 찾아봐도,,

레벨 트리거는 버퍼에 데이터가 남아있으면 계속해서 이벤트가 발생하는 것이고..

엣지 트리거는 버퍼에 데이터가 남아있으면 추가적인 데이터가 들어와도 이벤트가 발생하지 않는다고 봤습니다.

서버 소켓을 논블럭소켓으로 설정하고 EPOLL 이벤트에 등록할떄 EPOLLET 를 추가하여 등록하였습니다.

클라이언트가 연결될떄 또한 논블럭으로 살정하고 epoll 이벤트 풀에 EPOLLET 를 추가하여 등록하였습니다.

클라이언트에서 1024바이트씩 100번을 쪼개서 보내면

제 생각에는 서버에서는 EPOLL 이벤트가 1번만 발생해야할것 같은데,,

실제 샘플코드를 만들어서 실행해보니 7번 정도가 발생합니다 -,-,,,

소켓에 설정한것은 위에 말씀드린 논블럭, EPOLL 등록시 EPOLLET 추가 밖에 없습니다..

왜 이런건지 알려주세요 ㅜ

isl2296의 이미지

포인터 질문!!

A라는 타입이 있고

#define DEF (*(A *)0x123FFF) 뭐 이런게 있으면

해석을 어떻게 해야하나요?

(*(A *)0x123FFF)이게 해석이 안되네요...

ksjudo의 이미지

vi에서 긴 문자열에 특정 조건에 따라 개행을 하게끔 하려면 어떻게 할까요?

말로 설명하자니 조금 힘든데,
간단히 예를 들면 아래와 같아요

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 .....................
이렇게 한줄로 긴 문자열을

1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12
....
....

이렇게 4자리 씩 끊어서 라인별로 쓸려면 어떻게 해야 할까요?

페이지

프로그래밍 QnA 구독하기