log2 (밑이 2인 로그 함수), log (ln), log10(상용 로그) 구하기

C에는 자연로그(Natural Logarithm)를 구하는 log() 함수와, 밑(Base)이 10인 상용 로그를 구하는 log10() 함수만 있기에, 밑이 2인 로그 등을 구하려면 직접 함수를 만들어야 한다. 아래 예제에 logB() 라는 함수가 있는데

logB(숫자, 밑)

이런 형식으로 임의의 실수를 밑으로 지정할 수 있다.

C에서, 자연로그, 상용로그, 밑(Base)이 2인 로그 계산 예제

#include <stdio.h>
#include <math.h>

double logB(double x, double base);


int main(void) {


  puts(”  자연 로그 :n”);

  for (double d = 1.0; d <= 10.0; d++)
    printf(”   ln(%2.0f) = %.16fn”, d, log(d));



  puts(“nnn  상용 로그 :n”);

  for (double d = 1.0; d <= 10.0; d++)
    printf(“log10(%2.0f) = %.16fn”, d, log10(d));




  puts(“nnn  밑이 2인 로그 :n”);

  for (double d = 1.0; d <= 10.0; d++)
    printf(” log2(%2.0f) = %.16fn”, d, logB(d, 2.0));


  return 0;
}




double logB(double x, double base) {
  return log(x) / log(base);
}

출처 : http://mwultong.blogspot.com/

defunct 상태 발생시 대처법

 fork() -> execl() 로 만든 자식 프로세스가 가끔씩 알수없는 이유로 동작이 정지되는 경우가 있다.

 kill 시그널을 주거나 혹은 잘못된 명령을 전달했을때, 이를 처리하는 루틴이 없을 경우 이와 같은 현상이 발생한다.

 ps -eal | grep ‘해당 프로세스 네임’

 명령어를 입력하면 “defunct”이라는 상태 표시가 나온다.

 이와 같은 ‘defunct’ 상태를 가진 프로세스를 ‘좀비 프로세스’라고 한다.

 죽은 것도 아니요, 산것도 아닌 이런 프로세스는 사용자가 직접 죽여줘야 한다.

 하는 일도 없으면서 괜히 메모리를 잡아먹고 있는 이 프로세스를 삭제하는 마법의 주문은 다음과 같다.

 $ kill -9 PID

 이제 마법의 주문을 외워보자. : )