프로그래밍 QnA

gyxor의 이미지

[C++] debugging을 통해 메모리 stack segment 코드내용 보는 과

#include<iostream>
using namespace std;

void show(char i='a')
{
	char e = 'b';

}
int main()
{
	show();
	return 0;
}

위 소스를 디버깅하다가 show()가 호출이되고
char i='a' 로컬변수가 생성되고
정확하게 아래와 같은 순간에
void show(char i='a')
=>{
char e = 'b';

}
레지스터의 상태를 보면

EAX = CCCCCCCC EBX = 00560000
ECX = 00000000 EDX = 00790B70
ESI = 8178DD64 EDI = 0066FDF8
EIP = 00401030 ESP = 0066FDA4
EBP = 0066FDF8 EFL = 00000206 CS = 017F

seokyeongchan의 이미지

로그파일 작성시

데몬 프로그램에서 로그 를 파일로 쌓을려고 합니다.
이럴경우
파일은 맨 첨에 한번 오픈하고 락을걸구 나서 계속 사용하는 게 좋을까요?
아님 로그를 쓸 경우에만 오픈 , 클로즈를 반복하는게 좋을까요?

처음의 경우로 한다면 파일에 락을 걸어놓구 비정상적으로 종료되었을때는 어떻게 되는 것일까요?

감사합니다...

좋은 하루 보내세요...

iamsjkim의 이미지

시그널이 블록된다는게 무슨뜻인가요?

인터럽트에 관해 공부하다보니.. 시그널 처리에 관해 나오는데요..
sa_mask 세팅에 관해 알아보다보니..시그널 블록이 어쩌고 나오는데,
시그널이 블록된다는게 무슨뜻인지 모르겠습니다.
다음과 같은 문장인데요..

"시그날 핸들러가 호출되었을 때, 당신은 보통 그 시그날 핸들러가 다른 시그날에 의해 블록됨이 없이 끝나기를 원한다. 그 핸들러가 시작된 순간부터 끝나는 순간까지, 당신은 핸들러의 데이터를 오염시키거나 혼란시킬지도 모르는 시그날을 블록해야만 한다.

zombie007의 이미지

thread 생성시 interrupt 에서...

안녕하세요...
간단한 서버 테스트를 위해.. 클라이언트에서 thread를 1000개 생성하여..
서버에 connect하는 테스트를 하고있는데여....
thread를 한 200여개 생성을 하면..
pthread_create() 함수에서
interrupted system call 에러를 내면서 중단 됩니다..
또 한번은 Broken pipe라는 에레를 내면서 중단 됩니다..

왜이런 현상이 일어나는지여....
밑에 있는 코드는 쓰레드 함수입니다...

고수님들의 조언 부탁드립니다... ^^

[code:1]
void *client_thread(void *cli_info)
{

partout의 이미지

쓰레드 환경에서 waitpid에 관해서.. ?

하나의 쓰레드에서 차일드 프로세스를 생성하고,
다른 쓰레드에서 이 차일드 프로세스에 대해서 wait하면.. wait이 실패하더군요.

가령, 프로그램이 구동될 때 작업 쓰레드를 하나 생성하는데...
이 작업 쓰레드가 쓰레드는 파일에 기록된 이전 상태를 확인하고
필요한 경우 차일드 프로세스를 fork합니다.
이 후에 사용자로부터 접속이 있으면 이를 처리하기 위한 핸들러 쓰레드가
하나 생성되고, 사용자가 현재 구동 중인 차일드 프로세스를 종료시키기를 원하면

shiny의 이미지

message queue &amp; fp 연관문제 입니다..

커널에서 메시지 큐를 생성하여 메시지를 송신하면 아래 유저

프로그램에서는 그 메시지를 처리하는 (fp를 이용하여 'back.dat'에 저장하는)

프로그램을 짰는데 문제는 fp를 사용하지 않으면 제대로 동작이 되거든여..

근데 fp를 사용하여 돌려보면 딱 두번만 실행되고 이런 메시지가 나옵니다.

msgrcv error

msgrcv: No message of desired type

물론 백그라운드로 실행되고 있구여..

다른곳에서 에러가 나는지 확인해 봤는데 다 멀쩡하구

꼭 fp만 사용하면 에러메시지가 나오더라구여..

passion의 이미지

64bit 로 open된 file 크기를 알고 싶습니다.

대용량화일 처리부분인지라 fopen64로 file을 열어야 했습니다.
그화일의 크기를 알고싶지만 정확한 크기가 나오지를 않습니다.
fstat64도 이용해봤고 file pointer를 끝으로 이동시켜 ftello64 로도 이용해
봤지만 결과는 엉뚱한 값이었습니다. 적은 크기의 화일은 fopen 으로도 ftell으로도 정확한 크기를 산출해낼수 있었지만 2GB 이상의 화일의 크기는 도통
알수가 없군요. 대용량 화일을 open 하고 정확한 크기를 알수있는 다른 방법이
있다면 자세히 가르쳐주십시오.

urmajest의 이미지

c++ standard library의 맨 페이지는 어떻게 보나요?

c++ standard library의 맨 페이지는 어떻게 보나요?

예를 들어, std::cout을 보고 싶다면 어떻게 해야하는지 -_-

맨페이지를 따로 설치를 해줘야하나요?

아니면 맨페이지가 없는건지 -_-

가르쳐주세요~

koonpal의 이미지

소켓 프로그램에서요...

소켓 프로그램에서 클라이언트 프로세스만 강제적으로 종료시키면 서버쪽에서 '0'값을 받던데요...

그런데 클라이언트의 컴퓨터를 강제적으로 꺼 버리면 서버쪽에서 recv 함수가 아무것도 받지 못하고 계속적으로 기다리던데...

서버쪽에서 클라이언트의 컴퓨터가 강제적으로 꺼 졌음을 recv 함수를 통해 알 수 있는 방법이 있나요...

sageblue의 이미지

Linux상에서 C++로 화면초기화하는 방법이 어떻게 되나요?

윈도우상 TC++에서는,

#inclucd<conio.h>
void main()
{
clrscr();
printf("print is ... \n");
}

이렇게 화면을 [화면초기화] 한 후... printf 출력합니다!

그럼,
리눅스에서는
#include<conio.h> --> 이 헤더와
clrscr();[화면초기화] --> 이 함수를
리눅스에서는 어떤 식으로 사용하나요?

답변해 주심 감사하겠습니다!

페이지

프로그래밍 QnA 구독하기