프로그래밍 QnA + 설치 및 활용 QnA

송파구최고존엄의 이미지

대량의 io가 발생하는 환경에서 read 가 실패할경우 예외처리.

안녕하세요 file i/o에 문제가 생겨서 문의차 글올려봅니다.

현재 리눅스환경에서 fanotify 를 이용하여 파일 정보를 수집중입니다.

평상시에는 괜찮다가 파일 io가 대량으로 수행이 되면 (예, while(1) echo "1123"~~ 반복하는 쉘스크립트 실행)

read가 실패하더군요 그래서 실패할경우 for문으로 10번정도 반복시도 하면서 usleep 10000정도를 주고 재시도를 해봤는데 결국 똑같이 10번 실패를 합니다.

혹시 이러한 경우 예외처리를 어떻게 해야하는지 궁금합니다.

fd를 닫았다가 다시열면 괜찮을까요 ?

standalon의 이미지

전송 데이터가 다양한 데이터 타입일 경우, receive() 함수에서 수신 데이터를 처리하는 방법

오래간만에 코딩하려니까 간단하지 않네요. ^^

C++로 소켓 프로그램을 작성중인데, 전송 데이터의 타입이 다양합니다. (ex. 기본 자료형, 구조체, 클래스, etc)
기존에 작성했던 프로그램에서는 같은 데이터 타입에 길이만 달라서 그 길이에 따라서 처리 프로세스를 구분해주곤 했는데, (예를 들면, 전송 데이터가 항상 byte array래서, 첫번째 byte를 byte array의 길이로 정의함.)
이번에는 데이터 타입 자체가 달라서 receive() 함수에서 수신 데이터를 어떤 데이터 타입으로 받아서 처리해야 할지 고민이 됩니다.

이런 경우가 이전에도 분명히 있을텐데, 아무리 찾아봐도 못 찾겠네요.
아시는 분 조언 또는 관련글 URL 부탁드립니다.
감사합니다.

익명 사용자의 이미지

멀티스레드 서버에서 클라이언트의 종료를 알 수 있는 방법

리눅스 멀티스레드 서버를 만드는 중인데 클라이언트가 종료되었음을 아는 방법이 있을까요? 연결 요청이 들어올 때마다 클라이언트 소켓 디스크립터를 만들어서 스레드를 만들고 그 인자로 디스크립터를 전달하는데 epoll로 이 디스크립터를 관리하면서 EPOLLRDHUP 이벤트가 발생하는지 검사하려고 합니다. 사실 구현은 해보지 않아서 잘 작동하는지도, EPOLLRDHUP이 이렇게 사용하는건지도 감이 오지 않습니다. 어떻게 해야할까요?

익명 사용자의 이미지

변수를 일정시간마다 줄이고 싶습니다.

전역변수 A를 클라이언트가 원할 때마다 1씩 증가시켜주는데 이 변수를 증가 요청한지 30분이 지날 때마다 1씩 감소시켜주고 싶습니다. 예를 들어서 이 변수를 5분, 5분, 10분 간격으로 증가시켰다면 감소시킬 때도 5분, 5분, 10분마다 한번씩 감소시켜주고 싶습니다. 어떻게 할 수 있을까요?

익명 사용자의 이미지

sed를 이용해서 문자치환

245
246 DirectoryIndex index.html
247

에서

245
246 DirectoryIndex index.html index.htm index.php
247

으로 문자 치환을 하려하는데 도와주세요 ㅠ

익명 사용자의 이미지

멀티 쓰레드와 멀티 코어에 대해 궁금한게 있습니다.

프로그래밍을 할때 성능에 대해 생각할 때 병렬 처리 역시 하나의 최적화 방법중 하나인데.

이를 위해 결국 멀티 프로세싱을 할지, 멀티 쓰레드를 할지 결정하는거잖아요?

결국 context switching 등에서 조금 더 이점이 있는 쓰레드를 사용하게 되는데요.

근데 하나 궁금한건 제가 배울때는 CPU에서 말하는 core가 하나의 프로세스가 동작하는 아키텍쳐로 알고 있습니다.

그럼 코어가 6개더라도 그냥 for로 무한 루프를 돌리는 프로그램을 만든다면 당연 1개의 코어만 해당 프로세스를 동작 시키겠죠? 멋대로 코어를 여러개 사용해서 병렬 처리 할 것같지는 않습니다.

그럼 1개의 프로세스가 100개의 쓰레드를 가지고 있고 1개의 코어가 16개의 쓰레드를 지원한다고 가정해보겠습니다.

그럼 1개의 코어가 16개의 쓰레드가 동시에 돌아가는건 당연하겠지만 나머지 84개의 쓰레드를 다른 코어가 지원해 줄까요? 만일 안됀다면 1개의 코어만 동작하고 나머지 5개 코어는 놀게 됀다는 결론이 나오는데...

익명 사용자의 이미지

리눅스 awk 프로그램 코드가 이해가 안갑니다.

BEGIN {
    FS="[^a-zA-Z]+"
}
{
    for (i=1; i<=NF; i++)
        words[tolower($i)]++
}
END {
    for (i in words)
        print i, words[i]
}

필드 구분자를 알파벳을 제외한다는 거 같은데 +가 붙은 이유와
첫 번째 for문에서 words[tolower($i)]++ 이 부분이 잘 이해가 가지 않습니다. tolower함수?가 전달받은 인수를 소문자로 하는 것은 알겠는데 words라는 배열이 선언 없이 쓰이는 것도 이상하고 []안에 스트링을 적고 1을 증가시킨다는 것이...이해가 안갑니다.
foruses의 이미지

쉘 스크립트를 사용하여 문자를 검색하고 추출한 후 파일로 저장하는 방법?

435 3190
435 3293
435 2982
132 1023
132 9023
132 3982
132 30223
999 53323
999 232982
....
....
....
첫번째 컬럼의 숫자가 같은것만 추출해서 자동으로 (자료의 양이 매우 많고 추출될 열의 개수도 다릅니다.) 독립된 파일로 저장하려면 어떻게 해야 하나요?
가령 아래처럼요. 감사합니다.

$cat a1.dat
435 3190
435 3293
435 2982

$cat a2.dat
132 1023
132 9023
132 3982
132 30223

$cat a3.dat
999 53323
999 232982

익명 사용자의 이미지

유닉스 crontab에 대해 질문이 있습니다.

crontab을 사용 하려고 간단하게 crontab -e를 이용하여 다음과 같이 적었습니다.

페이지

프로그래밍 QnA + 설치 및 활용 QnA 구독하기