프로그래밍 QnA

진로나라의 이미지

linked list 질문입니다. (C)

솔직히 숙제 입니다.. -_-;

숙제올리면 욕먹을꺼 뻔히 알면서도 올리게 되내요.. 도저히 몰라서..

답은 저도 바라지 않구요..

왜 않되는지를 알았으면 합니다.. ㅠㅠ

문제는 아래 open_file() 함수 부분입니다.

data.txt에서 data를 읽어 정렬하면서 linked list에 넣어야 하는대

뭐가 문제인지를 모르겠습니다.

[code:1]void open_file(char *file_name){
FILE *fp;
node *t;
node *s;
node *p;
node *r;

p = head;
s = p->next;

if ((fp = fopen(file_name,"rb")) == NULL){

sore의 이미지

static 변수에 대해..

static이란 건 말그대로 변수를 선언할 때 메모리를 정적으로 할당하여 변하지 않게 하는 것으로 알고있습니다.

static int a;
라 선언해서 a라는 변수가 0x000010 번지에 잡히면
다음에 또 a라는 것을 쓸 대에도 항상 10 번지에 쓰고 지우고 하게끔...

그렇다면 전역 변수와의 차이는 뭔가요?
전역변수도 마찬가지로 프로그램 내에서 하나밖에 없는 변수명으로 선언을 해주어야 하는 것일텐데...

실질적으로 쓰임새의 차이라던가.. 그런건 어떻게 알 수 있는 것인지...

이형민의 이미지

소켓의 keep-alive에 대해 질문입니다.

mfc 소켓으로 메신져 클라이언트를 만들었습니다.
클라언트를 사용하다가 한참 동안을 사용하지 않으면 소켓이 죽어버리는 경우가 가끔 발생이 됩니다.

nErrorCode는 WSAECONNABORTED 로 죽어버리는데
현재의 소켓이 살아있는지 죽었는지에 대한 정보를 알수 있는 방법이 없을지요.

if( Socket == INVALID_SOCKET )
{

}

소켓이 언제 죽었는지에 대한 노티를 원하거든요.

게시판을 좀 둘러보니깐 정기적으로 서버에 Send를 하면 죽지 않는다 하는데
원론적인 방법은 아닌거 같습니다

psjcap의 이미지

voltile에 관한 질문...

밑에 4개에 차이가 뭘까요..??

1) volatile int a
2) int volatile b
3) volatile int* c
4) int* volatile d

그리고 thread 종료 flag로 volatile을 사용하려고하는데..
전역변수로 사용하기가 어려워서.. 포인터를 이용하려고 하거든요..
그럴 경우 위 네가지 중 변수 선언을 어떻게 해야하나요..??

처음 변수선언하는 부분이랑 포인터르 받는 부분이랑 둘다요..
무지 헛갈리네요..ㅠㅠ

samdochen의 이미지

배열연산이요.

안녕하세요.. 허접질문... 헤~~

예를 들어..구조체가 있고, 파일이 있습니다.파일은 데이터가 바이너리로 되어있구요...

struct bae{
unsigned char a[2];
unsigned char b;
}BAE;
BAE baeinfo;
main()
{
fp = fopen("data.dat",w);
for(i=0; i<10; i++)
{
baeinfo.a[2]=fgetc(fp);
baeinfo.b=fgetc(fp);
}
fclose(fp);
}

이랬을때...
바이너리로 되어있는 파일을 확인할수 있게 텍스트로 바꾸면..
한 레코드당
hatbary의 이미지

ESTABLISH 를 강제로 종료할수 없나요??

안녕하세요??

서버를 코딩하다가 답답한 상황을 만나서 질문 올립니다..

레드햇 8.0, 커널 2.4.18-14smp에서 작업하구 있는데요...

서버 소켓을 KEEPALIVE로 설정하지 않고, 타임아웃을 설정해놨구..
클라이언트 측에서는 KEEPALIVE로 설정하구, 마찬가지로 타임아웃 설정해놨구요..타임아웃은 30초 줬구요..

근데..가끔 어떤 상황이 발생하냐믄...

netstat로 보면 recv-Q와 send-Q가 모두 0인데, 상태는 ESTABLISHED로 되어있구, 서버 프로세스를 보면, read(소켓번호, .. 에서 블럭되어 있거든요..

neobug의 이미지

FreeBSD의 시스템 콜(SystemCall) 질문 입니다.

Linux의 시스템 콜
아규먼트를 일단 스택에 넣어주고 시스템 콜 함수를 호출 한 다음에
ax에 시스템콜 index를, bx~dx 까지는 인자를 스택으로부터 읽어
들여온 후, 소프트웨어 인터럽트로 커널모드에 들어가는 걸로 알고 있습니다.

그러면 FreeBSD의 경우엔 어떻게 되는지 gdb를 이용해 알아보니
일단 아규먼트를 스택에 차곡차곡 넣고서는 함수를 호출......
호출된 함수 안을 들여다 보면 레지스터 이용 이라곤 ax 하나 밖에 없네요.
물론 ax에는 FreeBSD에 정의된 시스템 콜 index를 넣는 레지스터구요.

mepeace의 이미지

make내 변수 사용은 ?

안녕하십니까 ?
make 명령에서 Makefile을 만들어서 컴파일하고 있습니다.
Makefile 내용중 일부는 다음과 같습니다.

BFLAG_UPDATE=NO

libTEST.a : test.o
ifeq ($BFLAG_UPDATE, YES)
ar -r libTEST.a test.o
endif

test.o: test.h
gcc -c -o test.o test.c
BFLAG_UPDATE=YES

위의 파일을 Makefile로 만들어서..수행을 시키면..
test.c가 컴파일 되는 시점에서...ar -r 명령어가 수행되고자 합니다.

분명..gcc가 수행된후..ifeq에서 $BFLAG_UPDATE는 원래값이 NO가 되어있습니다. 저는 $BFLAG_UPDATE를 변수처럼 사용하여..YES로 변경할려고

sirang의 이미지

structured data의 통신은 어떻게 하나요 ?

안녕하세요.

socket으로 통신할때, 기본적으로 character의 stream을 주고 받는데요,
만약
struct my_data {
int a;
int b;
}
위와같은 structure를 주고 받고 싶으면 어떻게 해야 하는거죠 ?

읽는 함수는 read()를 이용할 생각이구요.

제가 생각하고 있는 것은 다음과 같습니다.

char buf[MAX];
struct my_data * my;
read(fd, buf, MAX);
my = (struct my_data*)buf;

이렇게 하고나서 아래와 같이 사용할 수 있는 건가요 ?
tmpa = my->a;
tmpb = my->b;

naraping의 이미지

[질문] Linux Kernel Module Programming Guide에 있는 소스 에?

[root@NARAPING modulePrograms]# make
gcc -O2 -DMODULE -D__KERNEL__-W -Wall -Wstrict-prototypes -Wmissing-prototypes-i
system /lib/modules/'uname -r'/build/include -c -o hello-1.o hello-1.c
gcc: cannot specify -o with -c or -S and multiple compilations
make: *** [hello-1.o] 오류 1

문서에 있는 그대로 쳤는데 에러가 나네요. 어떻게 하면 되나요?

---------------------------------------------------------------------------------
hello-1.c
---------------------------------------------------------------------------------
[code:1]#include <linux/module.h> //모든 모듈에 필요

페이지

프로그래밍 QnA 구독하기