프로그래밍 QnA

hbsnow의 이미지

프로세스가 쓰레드에 인터럽트를 처리.. (alarm)

process -> thread1 생성

thread1에서 alarm(10);

10초후 process에서 EINTR 발생
쓰레드에는 아무 변화 없음

원하는 바는 쓰레드내에서 recv에 있어서 20초동안 아무일이 없으면 close를 하려고 하는데...
그래서 alarm를 썼는데 인터럽트(시그널)를 쓰레드가 받지 못하고 프로세스가 받습니다(SIGALRM)

그러다 보니 프로세스내에 select가 시그널을 받아서 EINTR이 발생하고 쓰레드는 계속 recv 대기중입니다.
send도 동일입니다.

해결방안이 뭐가있을가요?

hanplace의 이미지

malloc 에서 무한루프...

아래 보이는 Loading() 함수는 대략 초당 10회이상 콜이 되는 함수 입니다.

단지 하는일은 어떤 데이터를 패킷으로 부터 받고 메모리를 할당하여

넣어주는 일입니다. 그런데 정해지지않은 임의적인시간(20분~7시간)

마다, 아래와 같은 일이 일어나고 무한루프에 빠져 버립니다.

보시면 알겠지만, Loading 함수가 콜되자 마자 실행되는 것은 Init_Struct()

이고 Init_Struct가 콜되자마자 실행되는것은 malloc입니다.

malloc이 NULL 을 리턴하는것도 아니고, 그렇다고 seg_fault가 나는것도

indizarm의 이미지

A->B생성, A와B 통신, B작업완료 후 종료. 이럴려면 무엇으로

A와 B의 관계는 이렇습니다.

A는 계속 작동하면서 필요에 따라, B라는 녀석을 만들어
냅니다.
생성된 B는 작업을 진행하면서 A와 통신을 하고, 종료가
되면 결과를 A에 반환합니다.

이것을 만들려면 어떤 것으로 해야할까요?

thread? fork? execve?

aw2310의 이미지

프로그램 종료시 세그멘테이션 오류가 나는 이유?

소스를 올리기는 좀 그렇고..

그냥 질문 올립니다.

c++ 프로그램인데요..

프로그램이 잘 동작하는데.. 종료시키면서 세그멘테이션 오류가
납니다.

보통 이런 것은 어떤 경우에 생기는지요?

질문이 너무 막연한가요?

파괴자에서 객체 파괴하면서 생기는건가? 흠..

chakan01의 이미지

비트맵 데이타를 축소혹은 확대할수 있는 알고리즘에 대해 궁금

다음과 같은 비트맵데이타를 어떤 알고리즘을 사용하면
확대 또는 축소할수 있는지 궁금합니다.

예를 들면,
char A[60] = {
0x00, 0x00, 0x00,
0x03, 0x00, 0x00,
0x03, 0x00, 0x00,
0x07, 0x80, 0x00,
0x07, 0x80, 0x00,
0x07, 0x80, 0x00,
0x0c, 0xc0, 0x00,
0x0c, 0xc0, 0x00,
0x1c, 0xe0, 0x00,
0x18, 0x60, 0x00,
0x1f, 0xe0, 0x00,
0x3f, 0xf0, 0x00,
0x30, 0x30, 0x00,
0x70, 0x38, 0x00,
0x60, 0x18, 0x00,
0x60, 0x18, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00
};

위의 데이타를 한라인당 3바이트씩 찍어보면 다음과 같습니다.

kukuman의 이미지

쓰레드 관련 질문...

main thread가 thread pool을 생성해서 사용합니다...

thread의 사용 이유는 non-blocking 때문인데,,,
block될 수 있는 부분들을 thread에서 처리하기 위해서입니다...

그런데 기본적인 부분은 다 구성이 되었는데,,,
thread에서 어떤 작업을 다 처리한 후에 main thread에서 이를 알아야 합니다. (자원 해재 때문에...)

즉, main thread <- worker thread 의 통신이 필요한데,,,
이럴 경우, 조건 변수를 써서 signal을 날리는 방법이 유일한지요?

yhjj777의 이미지

makefile을 재귀적으로 호출해서 사용하려고 합니다..

부모 디렉토리에 있는 makefile을 실행시키면 자식 디렉토리를 돌면서 makefile을 실행시켜주고 싶습니다. 어떻게 하면 될까요?
그리고 추가적인 질문이지만,, 디렉토리에 있는 h파일과 cpp파일을 검색해서
자동으로 make를 해주고 싶은데,, 이런걸 구현해보신분은 조언 좀 해주세요.

deadlive의 이미지

여러 파일에서 pattern 수정

작업을 하다보면 여러개의 파일에 있는 pattern을 동시에 고칠 일이 자주 발생하는데..

특히 version upgrade 같은 것을 할 때에 macro name을 바꾼다던지..

이 때 저는 보통 vi 매크로를 이용하고 있습니다

하지만 너무 원시적으로 바꾸는 거 같은데

1. 여러 파일의 pattern을 동시에 바꾸어 주는 방법이 없을까요?

참 그리고 .vimrc에서 map 하는데

'/'가 한 line에 2번 들어가면 명령어 구조가 깨지던데 이는 왜그런건가요?

%s/A/B/g 같은걸 해 보니 안 되더라구요...

house2013의 이미지

채팅을 만들고 싶습니다.

채팅을 만들어 보고 싶은데요

linux 에 server 를 두고 웹상에서 입력받아 전송하는 채팅을 만들어 보고 싶습니다.
저의 C 언어 수준은 이제 겨우 기본 문법을 가지고 논 정도의 수준입니다.
MYSQL 과 연동하여 쉘에 나타나는 메모장 정도 해봤습니다.

요 몇일 C 언어로 채팅방을 짜는 로직을 머리속에 궁리 중인데요
아무리 생각해도 답이 없다는 .....

Client(input) --> Server (Processing) -->Client(Out Put)

여기서 Server 가 Client 에게 Out Put 하는 로직이 머리속에 잡히질 않습니다.

screen71의 이미지

파일송수신 프로그램을 만들고 있습니다..도움을 주세요.

FTP 같은 파일송수신 프로그램을 만들고 있습니다.
서버는 Linux , 클라이언트는 Windows 계열입니다.
TCP/IP 소켓을 사용하며 논블러킹이며
서버는 데몬형태로 프로세스복제를 하고 있습니다.

가장 단순하게 구조체를 정의하여 클라이언트와 서버간에 send, recv 했으며
실제 data 의 크기는 2048 로 잡고 이름하여 뺑뺑이를 돌렸습니다.
하지만 2048만큼 쪼개서 돌리다보니 너무 많이 발생하는 시스템콜때문에
전송속도가 무지무지 하게 느립니다.

이왕만드는거 한번 제대로 만들어보자는 생각이 들어서 마구마구 생각하는과정

페이지

프로그래밍 QnA 구독하기