프로그래밍 QnA

thslrtoo의 이미지

구조체에 대해서 질문드립니다.

공부를 하던 도중 책에 이런 구조체 문구가 나오더군요.

typdef struct aaa
{
    ...
    struct bbb *pB;
}AAA, *PAAA;
 
typedef struct bbb
{
    ...
    PAAA pA;
}BBB, *PBBB;

bbb 구조체를 보면 aaa 구조체의 포인터를 멤버로 가지고 있습니다.
bbb 구조체 위에 aaa 구조체 정의가 있으니까 문제가 없겠죠??
근데 제가 궁그한건 aaa 구조체의 pB 멤버입니다.

aaa 구조체가 정의될때는 bbb 구조체를 전혀 모르고있습니다.
물론 포인터형이라서 4Byte 만 할당해주면 되겠지만,
struct bbb 라는 이름 자체를 모르는데 어떻게 저게 가능한지 궁금하네요.

그리고 추가로

qnfw3174의 이미지

영상처리에 쓰일 이미지 화질

영상처리를 위해 이미지를 찍어서 네트워크로 전송해주는 부분이 있는데요.
찍은 이미지가 보내는데 꽤 시간이 걸리더군요.
화질이 중요해서 그런데 영상처리는 이제 막 입문입니다.
보통 구한 이미지를 특정 사이즈로 줄이고 이진화해서 속도를 높인다고 하는데 제가 궁금한건
사이즈를 축소시켰을 때 축소 이전과 동일한 수준의 정밀 영상처리가 가능한가요?
하나의 이미지를 2000*1500픽셀이 표현하는 것을 200*150으로 줄이면 처리할 연산은 줄어들지만 예를들어 인증이라던지 아주 정교한 분석이나 패턴이 필요할 땐 좋지 않을 것 같습니다.
어떤가요?

dbsthqkf의 이미지

시스템콜 vs 라이브러리 함수

커널은 user와 hardware간의 연결을 해주는 software라고 알고있습니다.
그렇다면 이러한 일을 해주는 것이 시스템콜인데,

하드웨어와 관련된 작업을 하는 함수가 시스템 콜함수인가요?
하드웨어와 관련되지 않은 작업을 하는 것들이 라이브러리 함수인가요?..

kernel의 기능 중에서 file system management라는 기능이 있는데 이것은 하드웨어와 아무 상관이 없는 것같은데 왜 kernel이 관리하는거죠?
ㅠㅠ

apmorz의 이미지

php fgets STDIN 사용하여 문자열 비교시 질문

php 초보입니다.

리눅스의 tail 을 이용하여
tail -f 파일 | php test.php 이런식으로 실행한 후 fgets STDIN 으로 받아서 특정문자열을 비교 후
매칭이 되면 조건문을 실행할려고 하는데요

아래와 같이 코드를 작성했을 시 조건문이 else 부분만 실행이 되고 특정문자열이 tail에서 출력이 되어도 인식을 못하는것 같은데 tail 의 출력값을 fgets STDIN 으로 받아서는 인식 및 작동이 안되는 건가요???
고수분들 도와주시면 감사하겠습니다.

maze의 이미지

open("/dev/null") 로 dup2 를 하는 코드가 있습니다.

fnull = open("/dev/null", O_RDWR);
if (fnull >= 0)
{
dup2(fnull, STDIN_FILENO);
dup2(fnull, STDOUT_FILENO);
dup2(fnull, STDERR_FILENO);
close(fnull);
}

fork() 동작시 해주는 부분인데..

왜 저렇게 했을까요..? 0, 1, 2 번 fd 가 뭔지는 알고있습니다.. 데몬이 되면 필요없는 fd 죠..

그냥 close(stdin) 해준거랑 차이가 뭘까요..?

궁금합니다.

helloc_의 이미지

sizeof( char + char ) 는 4byte ?

강의를 보다 이해가 가지 않는 예제를 보고 질문 올립니다
#include

int main(void)
{
char ch1=1, ch2=2;
printf( "%d\r\n", sizeof( char ) );
printf( "%d\r\n", sizeof( ch1 ) );
printf( "%d\r\n", sizeof( ch2 ) );
printf( "%d\r\n", sizeof( ch1 + ch2 ) );
return 0;
}

위 코드를 작성하고 실행한 결과

1
1
1
4

이런 결과가 나오네요 왜 1byte의 char 변수 ch1, ch2 를 더한 결과가 4byte가 되는건가요 ?

chobozzang의 이미지

boost shared_ptr이 std::map 의 value member로 사용할 때 질문입니다.

안녕하세요.

map 의 밸류로 들어갈 구조체가
typedef struct _abc {
int a;
int b;
boost::shared_ptr dt;
}abc;
이런식으로 선언 되어 있고

std::map test_map;

이렇게 정의되어 있을 때 map을 erase 하기 전에 shared_ptr 을 지워주지 않아도 메모리 leak 이 발생하지 않을까 궁금해서요... map erase 하면서 자동적으로 value 값이 지워질때 shared_ptr 이 파괴되면서 소멸자가 호출될까요?

혹시 이 부분을 테스트하려면 어떻게 해야 좋을까요? 해당 프로세스의 가상 메모리 사용량을 계속해서 log로 찍어주는 방법이 있을까요?

trymp의 이미지

xlsx, pptx, docx 같은 문서 압축파일과 zip 파일을 구분하는 방법을 알고 싶습니다.

xlsx, pptx, docx 같은 office 문서파일이 압축파일 형태를 같고 있잖아요

그런데 이것이 zip 과 아주 유사해서 파일타입을 식별하는데 애를 먹고 있습니다.

zip 과 이런 문서압축파일을 구분하는 방법을 알고 계신 분 있으면 좀 도와주십시요.

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

pkiwan의 이미지

모듈로 이루어진 코드 이해하려면 어떻게 해야하나요?

안녕하세요,

지금 계산용 코드를 하나 사용하고 있습니다.
여러 모듈로 이루어져 있고 각 모듈에 있는 식에 따라 array 변수에 값이 저장이 되면서 계산이 되는 코드입니다.
그런데 이 모듈 저 모듈에 있는 식들이 너무 많아서 도저히 따라갈 수가 없네요.

혹시 한 행씩 실행하면서 코드의 흐름을 따라갈 수는 없나요?

소스코드를 죽 봤지만 주석도 잘 안돼 있어서 매우 어렵습니다.

저를 좀 구원해주세요.

jip102의 이미지

Shell 프로그램 질문올립니다.

특정 파일(A.txt)의 내용이 아래와 같습니다.

user1 TAB1
user2 TAB2
user3 TAB3

for 문으로 2개의 컬럼을 받아서 다음과 같은 내용을 print 하려 합니다.

user1.TAB1
user2.TAB2
user3.TAB3

아래와 같이 파일을 읽은 후 for .. do 문으로 돌려서 하려 하는데 위에 결과 처럼
파일안의 2개의 컬럼을 아래와 같이 변수로 받아서 출력 할 수 있을까요?

array=`cat a.txt`
for list1 list2 in $array; do
echo "$list1.$list2"

<결과>

user1.TAB1
user2.TAB2
user3.TAB3

페이지

프로그래밍 QnA 구독하기