프로그래밍 QnA

kyupark01의 이미지

mutex변수에 관한 궁금증

안녕하세요.

프로그램을 짜다가 mutex구조체의 맴버 변수에 관해서 궁금한 점이 있어서 작성합니다.

mutex을 쓸때 pthread_mutex_t을 임의 이름으로 선언하여서(mutex로 선언)쓸 때
mutex구조체의 맴버중에 lock이라는 변수가 있는데 이 변수가 의미하는 뜻을 잘 모르겠어요

lock에 대한 변수를 출력하는 소스는 다음과 같습니다.

ghostyak의 이미지

Qt에서 QSqlQuery의 속도가 느립니다.

오라클DB를 사용중입니다.
Golden6 프로그램으로 쿼리해서 10만 로우를 받아오면 5초정도 걸리는데
Qt로 코드를 짜면 30초 이상 걸립니다.

아래는 제가 사용한 코드중 일부입니다.

QSqlQuery query;
query.setForwardOnly(true);
query.prepare("SELECT * FROM table_name");
while(query.next())
{
}

또한 QSqlQueryModel이 한번에 256개의 로우만 패치해 오는데
한번에 모든 로우를 갖고오는 방법이 있나요?
fetchMore()메소드를 사용해도 너무 오래 걸립니다. ㅠㅠ
빠르게 가져오는 방법 없나요?

bonya의 이미지

sqlite3 prepare 중 crash 발생

db 를 전역으로 open 하여 가지고 있고, object list 를 생성하기 위해 쿼리 할 때마다 sqlite3_prepare_v2 -> sqlite3_step -> sqlite3_finalize 순으로 하고 있습니다.

여러번 쿼리하게 되면 몇번돌다 어느순간부터 sqlite3_prepare_v2 시 crash 가 발생합니다..

Fatal signal 11 (SIGSEGV) at 0x6c633a70 (code=1), thread 4272 (Thread-3545)

sqlite3_prepare_v2
sqlite3_mutex_enter

죽는 곳을 보면 sqlite3_mutex_enter 에서 죽고 있습니다.

쿼리 생성이 가변적이라 sqlite3_prepare_v2 를 계속 해줘야하는데...
무엇이 문제인지 도무지 모르겠네요..
조언 부탁드립니다.

pedor의 이미지

libusb 는 kernel쪽 os에서만 사용이 가능한건가요?

www.libusb.org 에서 Welcome 항목에 보면

libusb is a C library that gives applications easy access to USB devices on many different operating systems.

이라고 명시되어 있는데요
저 부분에서 말하고 있는 on many different operating systems. 이라는 뜻이

커널기반을 하고있는 다양한 리눅스 배포판(ubuntu, centos...)을 말하는것인지

아니면 다른 종류의 os(rtos)에서도 사용이 가능하다는 말인가요?

libusb를 kernel 기반이 아닌 다른 rtos에서 사용해보신 분있으신지요?

graftker의 이미지

Linux VFS의 Back End 단에 inode에 접근하고자 합니다

여기 글은 처음써보네요

Linux VFS(Virtual File System) 쪽 질문입니다.
이론적인 내용만 보다가 재미로 어디까지 할 수 있을까 해서 하고 있습니다.

super block, dentry, inode, file 등등 관련 구조체들이 있는데
vfs layer 아랫 단인 실제 back end의 inode를 얻고자 합니다

예를 들면 vfs의 inode를 통해 ext4 file system의 ext4_inode를 얻고자 하는데
현재 kernel module을 통해서 어느정도 얻어서 ext4_inode_info 까지는 됩니다.

ext4_inode_info는 "fourth extended file system inode data in memory"
ext4_inode는 "Structure of an inode on the disk"

twinwings의 이미지

C 또는 C++에서 컴파일시간에 결정가능한 상수에 대해 질문드립니다.

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
 
 
static unsigned int arr[UCHAR_MAX][UCHAR_MAX];
 
void main()
{
    for (int i = 0; i < UCHAR_MAX; i++)
    {
        for (int j = 0; j < UCHAR_MAX; j++)
            arr[i][j] = i*j;
    }
}

제목이 요상하군요. 뭐라고 적어야 할 지..

매우 간단합니다. 그냥 큰배열이 미리 계산해놓은 값들을 저장하려고 하는데요.
(정적인 라우팅 테이블이라던가..뭐 그런것이 되겠지요..)

이렇게 하면 문제점이 매번 실행시 똑같은 배열을 초기화 한다는 겁니다.

kil9009의 이미지

하... fork하고 시그널, kill() 때문에요 ㅠㅠ

./fork_kill 10
자녀가 자녀를 낳는 방식으로 주어진 숫자만큼 프로세스를 생성, process # is created. 출력
마지막으로 생성된 프로세스가 차례로 최상위 부모까지 모두 kill
죽는 프로세스는 signal을 받아 “pid #, ppid # is kill by my decendent”를 프린트하고 종료

이렇게 만들라고 하는데...

#include
#include
#include
#include

aubin의 이미지

리눅스에서 EOF(Ctrl+D)에 대해서 자세한 설명좀 부탁드립니다

int a;
a = getchar();
while(a != '\r' || a != EOF) {
a = getchar();
}

foo();

-----------------------------------

제가 대충 알기론 리눅스에서 Ctrl+D 하면 바로 EOF가 들어가서 while루프를 나가서 foo()를 실행할줄 알았지만

실제로는 Ctrl+D를 두번 보내야 foo()로 넘어가더군요

왜 그런지 자세하게 설명해주실분 안계신가요?

Ctrl+C는 그냥 프로세스 강제종료니까 한번만 입력하면 foo를 실행안하고 그 자리에서 종료되는건 알겠는데 Ctrl+D는 어떤 원리이길래 한번에 while을 못나가는지 궁금합니다

rainbowline의 이미지

시스템 콜에 call-by-value를 통한 구조체 매개변수 전달에 관해 궁금합니다.

시스템 콜 함수를 구현하고 있는데 해당 시스템 콜 매개변수로 구조체를 넘겨주고 싶습니다.
예를 들면 다음과 같습니다.

typedef struct _a {
int i;
char c[4];
int j;
int k;
int l;
} a;

asmlinkage int sys_mysyscall(int index, a mypara) { ... }

현재 이렇게 구현해 놓고 있으며
(kernel)/include/linux/syscalls.h 의 가장 하단에 위의 { } 을 ; 로 바꿔 넣어놓았습니다.

dltkddyd의 이미지

deque로 2차원 이상의 배열을 만들려면 어떻게 해야하나요?

deque<deque<int>> obj1;

위와 같이 선언해놓은 obj1의 메모리를 2차원으로 할당하려면 어떻게 해야하나요? 혹은 그 이상의 배열은 어떻게 할당해야하는지요?
resize() 함수를 사용하면 되겠지만 왠지 불편하네요. 그러니까 다음과 같이 말이죠.

페이지

프로그래밍 QnA 구독하기