프로그래밍 QnA

hurryon의 이미지

[질문] exit() 함수의 인자값 의미?

exit() 함수을 사용할때 1이나 8의 인자을 무심결에 사용하고 있습니다. 제대로
된 설명 문서을 읽어 보지 못했기 때문에...그냥 습관상 사용하고 있는것
이죠...

exit() 함수의 인자값들의 의미에 대해서 제대로 된 문서나 혹은...
참고해야 할것 좀 부탁합니다. 혹은 아시는 분?

skylandi의 이미지

리눅스 readlink()함수에 대해서 질문요

책에서 readlink함수를 사용하면 심볼릭 링크 된 파일의 내용을 읽어 올수 다 고 합니다.
[code:1]#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define BUFSIZE 512

int main(int argc, char *argv[])
{
char buf[BUFSIZE];

if(argc != 2)
{
fprintf(stderr,"사용법 %s 심볼릭 링크파일\n",argv[0]);
exit(1);
}

if(readlink(argv[1],buf,BUFSIZE) == -1)
{
perror("에러");

seeker의 이미지

구조체를 typedef로 했는데요.

구조체 타입을 정의하기 전에
그 사이즈를 다음처럼 선언했는데
이것이 컴파일이 되네요?

#define EN54070_SHMSIZE sizeof ( en54070_info_t )

typedef struct en54070_info {
  /* Header */
  int intNum; /* strData의 실제 데이터의 배열크기 */
  time_t tm;  /* 공유메모리 내용이 마지막으로 수정된 시간 */
  /* data */
  char data[ 20000 * 10 ][ EN54070_ELSIZE ];
} en54070_info_t;

en54070_info_t 를 정의하기전에 sizeof로 참조한것이
어떻게 에러가 발생안하

partout의 이미지

[질문] gdbm 플랫폼 간 호환성 문제

gdbm을 사용해서 리눅스에서 DB 파일을 구성해서 사용하고 있습니다.
이 DB 파일이 리눅스 외의 다른 플랫폼에서 호환이 되지 않네요.
간단히 말하면, 리눅스에서 구성한 DB 파일이 솔라리스나 다른 플랫폼에서는
읽히지 않습니다.

gdbm과 인터페이스가 유사하지만, 플랫폼 간의 호환성을 제공하는 다른
라이브러리가 있나요?
아니면 DB파일을 다른 시스템에서 사용할 수 있도록 손쉽게 변환하는 방법이 있는지 알고 싶습니다.

답변 부탁 드립니다.

purewell의 이미지

socket의 환경을 알고 싶을 때...

...
  int hSocket;
  hSocket=accept(hServerSocket, NULL, 0);
...

저렇게 생성된 클라이언트 소켓의 IP-Version과 Address를
핸들만 가지고 알 수 있나요?

물론 accept의 인자에 sockaddr_in/sockaddr_in6를 넣어주면 되지만,
IP-Version에 상관없이 받아오고 싶은데...

seeker의 이미지

mmap 관련 컴파일 warning 메시지가 이해가 안되네요.

[code:1]선언이 다음처럼 되어있고요...
#include <sys/mman.h>
#include <fcntl.h>

typedef struct en54070_info {
int intNum;
time_t tm;
char data[ 20000 * 10 ][ 14 ];
} en54070_info_t;

en54070_info_t *gptr; /* pointer to a shared memory object */

... ( 중략 ) ...

if ( ( gptr = mmap( NULL , sizeof ( en54070_info_t ) , PROT_READ | PROT_WRITE , MAP_SHARED , fd , 0 ) ) == MAP_FAILED )
{
f_BatchErrLogWrite( __LINE__ , "Fatal error in mmap %s\n" , strerror( errno ) );

살자의 이미지

mpeg4에대해

안녕하세요.
mpeg4무엇인지 궁금합니다.
멀티미디어 압축방법이라고 나와있는데여..
압축 방법인지, 아니면 통신 방법인지 궁금합니다.
그럼 좋은 하루 되시길...

seeker의 이미지

shm_open 하면 메모리가 초기화되는지요?

shm_open으로 공유메모리를 생성한후
mmap로 공유메모리 크기를 적당히 지정했습니다.

이때 할당된 공유메모리내용이 0으로 초기화되어있는지 궁금합니다.

안그렇다면 초기화할수 있는 방법이 있는지요?

keizie의 이미지

#define 안에 #define을 쓸 수 있습니까?

[code:1]#define G_TYPE_MACROS(type_as_func, type_prefix, type_uppercase, type_camelcase) \
#define type_prefix ## _TYPE_ ## type_uppercase \\ \
(type_as_func ## _get_type ()) \
#define type_prefix ## _ ## type_uppercase(obj) \\ \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), type_prefix ## _TYPE_ ##type_uppercase, type_camelcase)) \
#define type_prefix ## _ ## type_uppercase ## _CLASS(klass) \\ \
(G_TYPE_CHECK_CLASS_CAST ((klass), type_prefix ## _TYPE_ ## type_uppercase, type_camelcase ## Class)) \

zienie의 이미지

접속한 클라이언트의 IP주소를 얻어오는데............

struct sockaddr_in name;
int namelen;
char remote_ip[20];

net_info->fd = fd; // 접속한 사용자의 FD

/****** remote 정보 읽기 *********/
namelen = sizeof ( name );
getpeername ( fd, (struct sockaddr *)&name, &namelen );

strcpy ( remote_ip,  (char*)inet_ntoa ( name.sin_addr.s_addr ) );

접속한 클라이언트의 IP 주소를 얻기 위해 위와 같은 방법을 사용합니다.
그런데...

간혹, 128.134.xxx.xxx..... 이나
164.124.xxxx.xxx 같은
이상한 IP 가 잡히는군요.

페이지

프로그래밍 QnA 구독하기