주제 없이 모아놓고 ctrl + F 로 찾아보려고 만듬
소켓 종료함수 소켓 닫기 소켓 닫을때 close와 shutdown차이
close -> 소켓 종료 함수. 성공하면 0, 실패하면 -1 반환.
shutdown -> 소켓 종료 함수. how_to 옵션에 따라 read buffer와 write buffer중 어떤 것을 차단할지 선택. 성공 0,실패 -1
int close(int socket_fd);
int shutdown(int socket_fd, int how_to);
how to 상수
- SHUT_RD : recv buffer 만 차단
- SHUT_WR : send buffer 만 차단
- SHUT_RDWR : 둘다 차단.
TCP 소켓 옵션 TCP socket 옵션
TCP 소켓 SO_LINGER 옵션 -> 소켓 종료시 송신 버퍼의 내용이 모두 전송 된 것이 확인 될때 까지 응용프로그램으로의 복귀를 지연하는 옵션. (기본은 소켓 종료시 송신버퍼 마지막에 FIN 패킷을 추가하고 바로 응용프로그램으로 복귀. 이후 작업은 커널에서 함)
// linger 구조체
struct linger
{
int l_onoff; // linger 옵션 설정(l_onoff = 1), 해제(l_onoff=0)
int l_linger; // linger timeout
}
//ex)
struct linger optval;
optval.l_onoff = 1;
optval.l_linger = 10;
setsockopt(sock, SOL_SOCKET, SO_LINGER, (char*)&optval, sizeof(optval));
문자열을 정수형으로 변환 문자열을 변환 int형으로 변환 int를 문자열로 변환 int를 string으로 변환 int를 char*로 변환 char*를 int 형으로 변환 실수형 변환
atoi() 함수 -> 문자열을 int 형으로 변환하는 함수 (헤더 : stdlib.h)
int atoi (const char* str);
double atof (const char* str);
long atol (const char* str);
long long atoll (const char* str);
itoa() 함수 -> 정수형을 문자열로 변환하는 함수. 비표준함수(MS에서만 사용가능. linux, mac os 사용 불가) (헤더 : stdlib.h)
따라서 리눅스에서 정수형을 문자열로 변환 할때는 sprintf 함수를 사용한다.
// ex)
a = 10;
char str[100]; //문자열 길이가 100
printf("a : %d\n", a); // printf는 콘솔 화면에 "a : 10" 이라고 찍는다
sprintf(str, "a : %d\n", a); // sprintf는 str 문자열에 "a : 10" 이라는 문자열을 할당한다
printf("%s", str); // str 에 문자열이 제대로 들어갔는지 확인
참조 : https://norux.me/24
메세지 큐 메시지 큐 메세지큐 메시지큐데이터 전송
msgget 함수 -> 메시지 큐를 생성하는 함수. 메시지 큐 식별자 반환. 실패시 -1 반환.
msgsnd 함수 -> 메시지 큐로 데이터를 전송하는 함수. 성공 0 실패 -1.
msgrecv 함수 -> 메시지 큐에 저장된 자료를 읽어오는 함수. 성공 0 실패 -1.
int msgget ( key_t key, int msgflg );
int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);
ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg);
참조 : http://forum.falinux.com/zbxe/index.php?mid=C_LIB&page=3&document_srl=420147
DB접속시 세션 재접속 후 인코딩 문제가 발생한다면 연결 옵션 확인.
연결 옵션을 통해 인코딩을 설정 하지 않고 연결 후 인코딩을 UTF-8로 바꿔주면, MYSQL_OPT_RECONNECT 옵션에 의해 다시 연결될 경우 기본 인코딩인 Latin으로 되돌아감.
mysql_options(&DBCon, MYSQL_SET_CHARSET_NAME, "utf8");
mysql_options(&DBCon, MYSQL_INIT_COMMAND, "SET NAMES utf8");
위 옵션을 사용하여 연결.
'메모장 > 리눅스' 카테고리의 다른 글
[Linux/Node.js] 리눅스 노드JS 디버깅 노트 (0) | 2021.03.04 |
---|---|
[Linux] Nodejs Error: listen EACCES 0.0.0.0:80 에러 (0) | 2020.10.27 |
[Linux] Node.Js 프로그램 실행시 인자 받는법 (0) | 2020.09.24 |
[Linux] rm, rmdir 명령어 (2) | 2020.07.14 |
[Linux] Make 와 Makefile, Makefile 만들기 (0) | 2019.07.23 |