프로그래밍 QnA

neogene의 이미지

Makefile 같은데 있는 @echo 와 그냥 echo 의 차이점은?

제목 그대로 @echo 했을때는 기능은 무엇이고 언제 사용하는 건가요?

ututlinux의 이미지

스트럭쳐의 메모리 할당 단위.

#include <stdio.h>

struct A{
        int a;
        char b;
};
struct B{
        struct A a;
        char b;
};

main()
{
        struct B *b;
        char c[20] = "ABCDEFGHIJK";

        b = (struct B *)c;

        printf("%c \n", b->a.b);
        printf("%c \n", b->b);
}

결과

E
I

구조체를 메모리 잡을때 단위는 4의 배수로 잡는 것 같습니다.
(캐릭터 3개라도 4바이트로 잡고 캐릭터 5개면 8바이트로...)

hwandori의 이미지

의미없는 do while 문

커널 코드를 보면 매크로 중에

do { } while (0)

이러한 do-while문이 있습니다. 이 의미없는 문의 뜻은 무엇인지 알고

싶습니다.

덧붙여 pgd_t나 pte_t와 같은 타입을 왜 멤버하나만 갖는 구조체로 정의

되어있는지도 알고 싶습니다. 그냥 멤버로 정의되어있는 타입으로

정의할때와 다른점은 어떤것이 있는지 알고 싶습니다.

[code:1]
typedef struct { unsigned long pte_low; } pte_t;
typedef struct { unsigned long pmd; } pmd_t;

gyxor의 이미지

프로그래밍으로 수학의 무한대를 판단할 수는 없을까요?

C언어로..
while(1) a+=1;
이렇게하면 표현은 된것인지..^^;

구체적으로 말씀드려서..
어떤 변수 x 의 값이 무한대이면
1/x = 0 이고

무한대에 근접한 값이면
1/x = 매우작은 소수
가 될텐데요..

사실 현재로써는 무한대가 아니라 소수값 조차도
변수의 정해진 바이트값을 벗어나는 수는 표현을 못하는것으로
알고있습니다.

그렇다면 혹시.. 어떤 수가 무한대인지 아닌지에 관한것 만이라도
판단하는 방법은 없을까요?

답변부탁드립니다.

keston의 이미지

[질문] 2개의 텍스트 파일을 중복되지 않게 합치기

cat a.txt
1
2
3

cat b.txt
3
4
5

이럴때 이 두 파일을 중복되지 않게 합쳐서
cat a.txt
1
2
3
4
5

이렇게 만들려고 합니다.
이걸 C로 짤려고 하는데 쉬울거 같은데 막상 해보니 잘 안되네요.
조언 부탁드립니다.

RedPain의 이미지

18000byte이상의 파일을 한번에 읽기

저는 군인이라 부대에서 취미활동으로 코딩을 하고 있습니다.
인터넷은 지금같이 외박 나왔을 때만 할 수 있습니다.
처음에는 컴파일러가 없어서 debug.exe 가지고 어셈블러를 만드는 삽질을 하곤 했지만 지금은 Visual C++이 있어서 Knuth교수의 TAOCP에 나오는 MIX의 Emulator를 만들고 있습니다.
MIX의 어셈블러를 만들고 MIX Emulator가 그것을 한번에 읽어오는 데 만팔천몇바이트를 넘어가면 그 다음부터는 읽어오지를 못 합니다.
debug.exe로 읽어 보니 MIX의 어셈블러가 파일을 제대로 만들어 낸 것은 확실한데 MIX Emulator가 파일을 만팔천몇바이트를 넘는 부분부터 못 읽는 군요.

quintus의 이미지

csh 에서 파일로부터의 한줄 입력은 어떻게 하나요?

사용자로부터의 한줄 입력은
set x = $<
이렇게 하면 되던데
파일로 부터의 한줄 입력은 어떻게 받죠?

set x = `cat /etc/passwd` 이렇게 하면 몽땅 다 한줄에 들어가고..
파일에서 한줄씩만 입력받고 싶거든요.

밑에 보니

while read x 
do 
    id=`echo $x | cut -d ':' -f 1` 
    group=`echo $x | cut -d ':' -f 4` 

    awk -F ':' -v group=$group -v id=$id '{if (group == $3) { print id, $1 }}' /etc/group 
done < /etc/passwd 


이런식으로 하던데
C
lims의 이미지

프로세스와 스레드...

프로세스와 스레드가 대충 어떤 차이인지는 알고 있습니다.
과연 어떨때 스레드를 쓰는 것이 좋고 어떨때 프로세스를 쓰는 것이 좋을까요?

제가 알고 있는 것으로는

Quote:
1. 스레드는 한 프로그램에서 같은 실행을 하지만 프로세스는 자식 프로세스에게 exec함수같은 것을 이용해서 또 다른 실행을 할 수 있다는거...

2. 스레드는 포인터의 잘 못된 사용으로 인해 다른 스레드에 악영향을 미칠수 있지만(같은 메모리 공간과 자원을 사용하기 때문에) 프로세스는 그런 일이 없다는거(메모리 공간을 복사해서 사용하기 때문에)...

sisbn의 이미지

root권한으로 insmod를해서 간단한 메세지 출력을 하려 하는데

#include <linux/kernel.h>
#include <linux/module.h>

int init_module(){
printk("hello module\n");
return 0;
}


void cleanup_module(){
printk("bye\n");

}

gcc -D__KERNEL__ -D_LINUX -DMODULE -c hello.c
insmod hello.o 이렇게 했는데 warning message만 뜨고 저

hello module이라는 메세지는 뜨질 않네요. 왜 그런지 아시는분 좀 알려주세요.ㅜ.ㅜ

galien의 이미지

라이브러리 공부는 어떻게 하는가.

조금 부끄러운 질문입니다만,
언어 공부 방법론 적인 질문입니다.

버릇이 그렇게 들어놔서, 뭔가 프로그램 필요한 게 있으면
c로 작성을 합니다만, 가장 이해를 잘 하고 있고
자신있는 언어는 Java입니다.

자바는 API가 참 편하게 되어있어서 접하기가 쉬웠습니다.

언어의 기본적인 문법을 익히고 나면 새로운 라이브러리를
접할때 쉬운 인덱스나 간단한 설명만 있으면 그럭저럭 그 다음은
진행해 나갈 수 있다고 생각하는데요.

C, C++같은 경우는 대충 man페이지를 활용합니다만,

페이지

프로그래밍 QnA 구독하기