프로그래밍 QnA + 설치 및 활용 QnA

inviolable의 이미지

리눅스 시스템 프로그래밍 공부하는 초보인데요 파일과 스트림에 대해서 몇가지 질문이 있어요.

표준 I/O함수로(시스템 콜 함수인 write말고)로 입력한다고 하면요... 표준 입출력함수 호출 -> 버퍼링 -> 버퍼링 정책에 따라 버퍼에 일정량 량이 찼을 때(전체 버퍼링이면 버퍼 전체가 다 찼을 때, 줄 단위 버퍼링이면 새줄 문자가 입력되었을 때) -> write함수 호출 -> 커널 내부 버퍼에 저장 -> 대기열(큐)에 등록(sync함수, 데몬 프로세스가 30초마다 수행) -> 한가할 때 큐에 있는 내용이 디스크에 저장됨.

이런 과정인 거 맞나요??

유명한 책인 Advanced Programming the UNIX Environment의 번역본(류광님이 번역자세요)인 UNIX 고급 프로그래밍 제2판 이라는 책인데요.

3.13절(제3장은 파일 I/O)에 sync, fsync, fdatasync함수를 설명하면서 이런 설명을 하셨어요.

armadillo의 이미지

vimscript에서 list관련..

반갑습니다.

vimscript를 배우면서 작은 script를 짜는데 제대로 동작을 안합니다.

script의 기능은

하나의 필드들이 하나의 라인으로 된 화일을 읽어서 후행공백(trailing spaces)을 없애고
다시 저장하는것인데...후행 공백 처리가 되지 않네요.

function! GetData()

let lst_line = line('$')
let col_size = 5
let item = ''
let items = []
let out_items = []

let items = getline(1, lst_line)

echo items

march의 이미지

xinetd로 실행되는 프로그램 telnet 접속시 입력을 먼저 받는 문제..

telnet으로 특정 포트로 접속하면 제가 만든 프로그램을 실행시키고 프로그램 안에서 동작 외에 다른건 못하게 하려고 하는데요.
xinetd를 쓰면 된다고 하길래 테스트를 위해 간단하게 프로그램을 짰습니다.

프로그램 소스
int main(){
char a[100];
printf("New Start");
scanf("%s", a);
printf("%s", a);
}

서비스 설정

service back
{
socket_type = stream
wait = no
user = root
server = /home/guest/back
disable = no
}

그런데 telnet localhost 9999로 접근해보니 printf의 New Start가 먼저 출력되지 않고 scanf 입력을 먼저 받은 후에 printf는 모아서 한번에 처리되더군요.
이를 어떻게 해결할 수 있을지 문의드립니다.

dissu의 이미지

C언어에서 wrapper main 함수

어떤 라이브러리를 사용하는 사용자가 제작한 main함수가 끝나기 전에 그 라이브러리에 존재하는 추가적으로 실행하고 싶은 메소드가 있는데요.

Wrapper exit 나 Wrapper printf 같은 경우 반환형과 인수들의 수와 타잎이 정해져 있으므로

Wrapper 선언과 필요하다면 가변인수처리를 통하여 Wrapper 함수를 만들 수 있었습니다.

하지만 main 함수는 사용자가 argument와 return 값을 설정 할 수 있기에 모든 경우를 고려해야 될것 같습니다.

이러한 모든 경우를 Wrapper main함수를 제작 할 수 있을까요?

nicemuy의 이미지

컴퓨터의 소수 계산 질문있습니다.

먼저 제가 고민하게된 소스 부터 보여드리겠습니다.

아마 c언어를 처음 배우거나할때 참 유명한 소스로 알고있습니다. 0.1을 100번 더하는 소스인데요, 저는 여기에 0.1*100을 한것을 따로 추가했습니다.

궁금한게 지금 저 소스의 출력값이 10.000002와 10.000000으로 나오는데, 어째서 0.1을 100번 더한것과 0.1에 100을 곱한 값의 정밀도가 다른건지 알고싶습니다.

0.1*100도 10.000002가 나와야할것 같은데 의외로 정확하게 나와서 당황했습니다. 어떻게 이렇게 되는지 알려주세요!

feellogan의 이미지

madwifi를 이용한 AP 동작 관련

Fedora 13에 madwifi를 설치한 후 AP모드로 동작을 시키려고 하는데요.

eth0에는 공인 IP주소를 할당하고 DNS, gateway주소를 할당하여 인터넷이 잘 됨을 확인하였습니다.

그리고 ath0를 AP모드로 설정한 뒤 사설 IP주소를 할당하고 dhcp를 동작하게 하여 ath0에 붙은 휴대폰에 사설IP 주소를 할당합니다. 와이파이가 동작되었다는 무늬도 휴대폰에 나타납니다.

그런데 실제로는 인터넷이 되지 않고 tcpdump로 찍어보면 ARP만 계속 날아갑니다. 왜 그런 걸까요...?

제 생각에는 일반적으로 공유기는 공인 IP를 이용해서 유선으로 받아와서 사설 IP를 통해 무선으로 단말들과 통신을 하는데 이는 공유기 내부에서 유선으로 받은 데이터를 무선으로 전송해주기 때문이죠.

하지만 제가 꾸민 상황에서는 단말이 AP에 사설 IP로 접속이 되어 있는데 madwifi가 이를 어떻게 유선으로 보내는지가 의문입니다. 설정은 다 한 것 같은데 인터넷이 되지 않아서 너무 답답하여 글을 올립니다. 혹시 아시는 분 있으신가요?ㅜㅜ

sacredone의 이미지

blocking 소켓 non-blocking 소켓으로의 변환

블로킹을 넌블로킹으로 변환할때의 방법을 찾아보니까

fcntl() 함수를 사용하라는 글이있었고

ioctlsocket() 함수를 호출해야만 가능하다는 글도있고

헷갈리네요;;

게다가 소켓을 어떻게 변환했다쳐도

read/write, recv/send 등의 함수사용에도

(특히 recv/send) 인자값에 변화가 있을거같은데

지식좀 나눠주실수 있으신분 계실까요 ㅠ

먼저 제가짠 단순한 코드점 올려볼게요

먼저 서버프로그램

syayiyip의 이미지

클래스(혹은 구조체) 변수 alignment 질문

4 byte로 alignment 설정되어 있을 때

class a {
int v1;
char v2;
char v3;
int v4;
};

a 객체의 크기가 저는 16byte일 줄 알았는데 12byte로 나오네요.
char 변수끼리 붙어있으면 alignment 상관없이 꾹꾹 눌러담는게 맞는건가요?

argonz의 이미지

sunldap 설치 질문 있습니다

제가 리눅스 에 sunldap 을 깔아 보려고 합니다

그런데 sunldap 이 지원하는 리눅스 플랫폼이

Red Hat Linux AS 2.1 U6
Red Hat Linux AS 3.0 U4

이더라구요 그런데 이 리눅스 말고 우분투에 한번 설치 해보고 싶은데

우분투에는 설치 가 되지 않는지 궁금 합니다.

답변 부탁드립니다

pogusm의 이미지

c++ 에서 함수를 호출할때, 인수를 new 로 생성한 값으로하면 메모리누수가 발생하나요?

appendChild(new TreeItem(columnData));

위와 같은 방법으로 appendChild 함수를 호출하면, 메모리 누수가 발생하나요?

QT c/c++ 에서 QTreeView 에 tree model 을 출력하는 소스중에 저런 비슷한 부분이 있던데..
new TreeItem 부분을 따로 delete 해주는 부분은 없더라구요..

페이지

프로그래밍 QnA + 설치 및 활용 QnA 구독하기