상황 subprocess.Popen과 subprocess.PIPE를 사용하던 중, 특정 프로세스가 생성된 후 정상적으로 동작하지 않고 좀비 프로세스가 되어 버리는 상황이 발생하였다. 예시 커맨드 및 코드 ls -alh | python test.py | python test2.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import subprocess import traceback import sys # ls -alh | python test.py | python test2.py cmd1 = ['ls', '-alh'] cmd2 = ['python', 'test.py'] cmd3 = ['python', 'test2.py'] try: p..
소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 import socket, select class SimpleServer(object): def __init__(self, host='0,0,0,0', port): self.host = host self.port = port self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.sock.bind((self.host, self..
Visual Studio WDK 설치 방법 : https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk ---------------------------------------------------------------------------------------------------------------------------- WDK가 잘 설치되었으면, Visual Studio 2019 - Create a New Project를 했을 때 아래처럼 Visual Studio Driver Kit 템플릿이 보여야 한다. 근데 Driver와 관련된 템플릿이 하나도 안 보여서 이것때문에 재설치하는 삽질을 겪었다. 그래서 찾아보니 WDK가 잘..
현재 Windows OS가 32비트인지 64비트인지 확인하는데 왜 현재 프로세스 핸들로 IsWow64Process 함수를 호출하는 걸로 현재 프로세스의 아키텍쳐를 확인하는 코드만 나올까... 시스템 프로세스의 핸들이면 이해하겠는데 소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 BOOL IsWin64() { SYSTEM_INFO sys_info; GetNativeSystemInfo(&sys_info); WORD wArch = sys_info.wProcessorArchitecture; if (wArch == PROCESSOR_ARCHITECTURE_AMD64) return TRUE; else if(wArch == PROCESSOR_ARCHITECTURE_INTEL) return FALSE; ..
보호되어 있는 글입니다.
libcurl 다운로드 방법(Windows) : vcpkg 사용 API 목록 curl_global_init libcurl 라이브러리 내부 환경 초기화 반환값 : CURLcode 타입의 오류 값 1번째 인자 : flags("CURL_GLOBAL_"으로 시작) curl_global_cleanup curl_global_init으로 생성된 자원 해제 curl_free : curl 내부에서 할당한 메모리를 해제 Easy Interface curl_easy_init CURL 핸들 생성 반환 값 : CURL 핸들 curl_easy_cleanup CURL 핸들 정리 1번째 인자 : CURL 핸들 curl_easy_setopt CURLcode 타입의 오류 값 1번째 인자 : CURL 핸들 2번째 인자 : 설정한 옵션의 ..
struct의 경우. 접근지정자가 기본적으로 public이기 때문에 선언 및 초기화가 어렵지 않다. 먼저 struct로 아래처럼 구조체를 만든 후, 선언과 초기화를 하면 2가지를 볼 수 있다.12345678#pragma comment(lib, "ws2_32.lib")#include #include struct param { SOCKET m_sock; BOOL m_bClose;};Colored by Color Scriptercs 첫 번째 방법은 가장 흔하게 사용되는 방법으로 먼저 선언을 하고 내부 멤버를 직접 하나하나 초기화하는 방법이다. 12345678910int main( __in int argc, __in char* argv[]){ struct param p; p.m_sock = NULL; p.m_b..
보호되어 있는 글입니다.
보호되어 있는 글입니다.