프로그래밍 QnA

thisnome의 이미지

소켓프로그램에서 read()와 recv(MSG_WAITALL)의 차이점

서버쪽에서 클라이언트의 요청을 preforking방식으로 받아서 처리하는 부분을 작업하고 있습니다.
각 Child에서의 Read부분을 다음과 같이 두가지중 어떤것을 사용하는게 더 좋은건지 고민중입니다. (OS는 Redhat 9.0 입니다)

[code:1]
while(total_count < sizeof(DBIF_REQ))
{
again:
if((count = read(conn_fd, ((void *) &reqData) + total_count, sizeof(DBIF_REQ) - total_count)) < 0)
{
if(errno == EINTR)
goto again;

Trace("read() : error");

하하의 이미지

unsigned int

main() {

unsigned int val;

val = 0x89ABCDEF;

printf(" %d \n", val);

}

위 코드에서 원하는 어떤 숫자(아주 큰 10진수)가 안나오고

-1985229329

이런 수가 나오는 이유는 무엇인가요?

sizeof(unsigned int) 하면 4byte가 찍힘니다.

이말은 최상위. 부호 비트까지 수로 채워 넣을 거다. 그러니

0xffffffff 의 숫자까지 표현할 수 있다가 아닌가요?

왜.. 값을 표현 못하겠다의 의미 같은 -(음수부호)가 붙어서

오는 건가요?...

shean0의 이미지

makefile로 구현할때.. 전달인자를 main에 주는 방법이 어떻게

움.. 지금까지.. 이럴 필요가 없었는데..
컴파일시.. 옵션으로 debug level를 조절하려구 합니다...

이와 같은 일을 한다고 생각하니..
기본적으로
makefile로 구현할때.. 전달인자를 main에 주는 방법이 어떻게 되는지요?
이것이 고민이 되는데요...

조언 부탁드립니다.

iwall의 이미지

프로그램 실행시 공유라이브러리 적재 매카니즘

프로그램 A 가 있습니다.

$ ldd A
liba.so.1 --> /lib/liba.so.1
libb.so.1 --> /lib/libb.so.1

두개의 공유 라이브러리를 사용하는 프로그램 A가 컴파일 되어 있습니다.
프로그램 A를 기동하기 위해서 공유 라이브러리 liba.so.1, libb.so.1 은 반드시 필요합니다.
또한
$ A -a
라고 명령을 수행하면 liba.so.1 에 있는 함수를 수행합니다.

$ A -b
라고 명령을 수행하면 libb.so.1 에 있는 함수를 수행합니다.

이런 상황에서 liba.so.1 가 없어졌습니다.
liba.so.1을 구할수가 없기 때문에, liba.so.1에 있는 기능은 포기하고,

menupan의 이미지

pthread 에서 구조체를 통한 데이터 공유에 관하여

쓰레드 사용시 전역변수를 이용하지 않고 구조체를 가지고 하려고 합니다.
예제들을 보니 대략 다음과 같더군요... :D

typedef struct{

double volatile *p_s;
pthread_mutex_t *p_s_lock;
...
}DATA;

void *thread_function(void *arg){

DATA D = *(DATA *)arg
...
pthread_mutex_lock(D.p_s_lock);
p_s = val_to_modify;
pthread_mutex_unlock(D.p_s_lock);
}

void main(){

DATA *A;
double volatile s;

for(...){

A[i].p_s = &s;
pthread_create(...);
}

for(...){

pthread_join(...);
}
}

각각의 쓰레드에서 사용하는 변수(p_s)가 main 안의 하나의 변수(s)와 어떻게 매치되는 지 궁금합니다. :?:

ethdus의 이미지

.dat 파일에 관한 질문입니다 관심가져 주세요^^

안녕하세요 처음 뵙겟습니다^^
다름이아니라 제가 좀 너무 초보라서;;;
.dat 파일 말인데요 데이타 파일이요(동영상 말고)
소스 코드가 open을 통해 데이타 파일을 읽어 들여서
프로그램을 실행 해야 하는건데
.dat파일이 컴파일하는것은 아니라고 들었습니다
그러면 제가 프로그램을 잘못 짜면 어떻게 알죠?
그리고 파일 형식은 c랑 같은가요?
알려주세요~

moonzoo의 이미지

extern 에 대해서..

예를 들어

xxx.h 와
a.c b.c c.c d.c e.c f.c 로 구성되는 프로그램을 작성중인데요.

a.c 에서 global 변수 yyy를 정의했습니다.

이 변수 yyy를 c.c d.c e.c 에서 사용한다고 할경우..

c.c d.c e.c에서 각각 extern을 해주는 것과 ---- 1번.

xxx.h에서 extern 해주는 것과 ---- 2번.

중에 어떤 방법이 바람직할지 의견을 묻고 싶습니다.

spinel1의 이미지

Signal에 대한 질문입니다.

Signal을 공부하는데 책 첫페이지에 나오는 말입니다.

- 프로세스들 사이에서 비동기적(asynchronous)사건의 발생을 전달한다.

여기서 비동기적이라 함은 무슨 의미인가요??

아무리 고민해도 이해가 되지 않는군요~

tazanboy의 이미지

select를 잘못 사용하고 있는것 같습니다.

[code:1]
while(!server_ending) {
sin_size = sizeof(struct sockaddr_in);
if ((newsockfd = accept(sockfd, (struct sockaddr *)&client_addr, &sin_size)) == -1) {
perror("accept");
continue;
}

printf("connected from %s\n", inet_ntoa(client_addr.sin_addr));

if ((PID = fork()) != 0) {
close(newsockfd);
continue;
}

printf("new socket made\n");

rain의 이미지

NIC device driver 제작 방법에 대한 질문

리눅스에서 Realtek 8139 ethernet 카드의 driver를 제작해보려구 합니다.
소스도 있어서 분석하고 실제로 만들어 보면 재미있을거 같더군요.
첨으로 driver를 만들어 보는 거라 궁금한게 많습니다.
보통 driver를 제작할때 단지 device에 대해 제품 회상에서 제공되는
레퍼런스만 있음 제작이 가능한건 지 궁금해요. 혹시 nic카드의 상태등을
확인 해보기 위한 장치들이 있어야 하는건지. 아니면 kernel level에서
테스트 해가면서 제작을 하는 건지 궁금합니다. :roll:

페이지

프로그래밍 QnA 구독하기