프로그래밍 QnA

neohwang의 이미지

[완료]쓰레드를 이용한 통신 프로그램에서 mutex, cond 문제


쓰레드를 이용한 통신프로그램입니다.

SocketRead() 함수에서 ThreadRead 함수로 mutex와 cond_signal을 이용하여 넘기는 구조입니다.

문제는 rIdx 값을 이용하여 변수를 넘기는 부분인데요.

1. SocketRead()함수에서 rPool[rIdx++] 해서 변수값을 넘깁니다.

2. ThreadRead에서 rIdx가 0이면 cond_wait로 시그날을 기다립니다.

문제는 위 2번에서 절대로 rIdx가 0이면 그 아래 printf()문을 수행할수 없을 것 같은데..
수행이 되네요..

이 부분이 왜 그런지 도움 부탁드립니다.

감사합니다.

gloomyr의 이미지

aio_xxx 함수에 대해서 혹시 잘아십니까??

aio_return64 --> man 에 잘나와있습니다.
...

inamind의 이미지

[완료] task_struct 에서 stack 값은 무엇을 가르키는 것인가요?

안녕하세요.

제가 linux 의 특정 프로세스에서 task_struct 의 값을 보고 있습니다.
(struct task_struct*)0xDAE889C0 = 0xDAE889C0 -> (
state = 0,
stack = 0xD833A000,
usage = (counter = 2),
flags = 4194624,
ptrace = 0,
lock_depth = -1,
prio = 120,
...

stack 값이 다음과 같은데
stack = 0xD833A000,
cat /proc/[PID]/maps 로 보

lysgenius의 이미지

Curses 모드에서 TCP/IP 채팅 프로그램 만드는데 질문 드립니다.

멀티쓰레드를 이용한 책의 예제로 나와있는 채팅 프로그램으로 curses 모드에서 동작하는 것을 만들고있습니다
그런데 터미널에서 채팅을 할 때는 문제없던 예제소스가 curses 모드에서는 커서로 인해 RACE 상태가 걸리면서 화면이 깨지더군요.

felix의 이미지

dll 만들기

dll 만들기 공부하던 중 다음과 같은 코드를 봤습니다.

choboja의 이미지

리눅스 스케쥴링관련


안녕하세요?
현재 리눅스 커널을 공부하고 있는 학생입니다.
다름이 아니라 현재 2.6.28을 사용중인데,
책은 2.6.15를 기준으로 작성이 되어 실제 코드랑은 많이 다르네요.
특히 지금 스케쥴링 관련해서 보고 있는데 좀 많이 다르네요.

질문은 커널버전에 따라 사용된 함수에 대한 간략한 설명같은걸

idrukawa의 이미지

[완료] c언어 소스상에서 shell에 입력하는 방법이 있나요?

xxx.cpp 소스상에서 root 로 로그인 하는 코딩을 하고 싶습니다.

간단히 이런 식으로 코딩을 해봤는데요...

char *cmd;

sprintf(cmd, "su -");
popen(cmd, "r");

sprintf(cmd, "passroot");
popen(cmd, "r");

이런 결과가 나옵니다.

password: sh: passroot:notfount

popen() 명령을 수행하면 하면, 내부

junee74의 이미지

Linux 방화벽 관련 질문

리눅스에는 소프트웨어 방화벽이 있습니다.
이 방화벽이 적용되는 시점이 궁금해서 질문드립니다.

보통 NIC에서 Packet을 받으면, 이 Packet을 Ethernet Frame Header를 먼저 확인하고,
다시 IP Header를 확인 한 후 TCP Header를 확인하고 있습니다.

리눅스에 구현된 방화벽은 IP Fragmentation과 TCP Reassembly 기능이 모

sungeuns의 이미지

안드로이드 블루투스 관하여 질문드립니다~

안드로이드가 올라간 스마트폰에서 안드로이드가 올라간 ARM11기반의 보드에 블루투스로 접속하여(페어링, 연결등은 되었다고 가정하고) 카메라를 켜고 그 영상을 받는 방법이 있을까요?

물론 지금나오는 블루투스의 속도로는 영상은 안될것 같고, 스마트폰으로 ARM보드의 카메라 이미지를 대략 1프

gurumong의 이미지

[C] 구조체 포인터에서 -> 연산자를 풀어쓰면...

구조체를 가르키는 포인터를 사용해서 그 구조체의 맴버에 접근하려면 -> 연산자를 사용하잖아요
그 표현을 풀어쓰면 (* strudt).member 로 표현되는것으로 알고있는데

a->b->c 와 같은 표현을 풀어쓰면 아래와 같이 되는데
(*(*(*a).b).c)

이와 같이 쓰면 완전히 잘못된것인가요?
(*a).(*b).(*c)

페이지

프로그래밍 QnA 구독하기