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

wflore의 이미지

다중 클라이언트 접속 후, 값 반환 문제

안녕하세요
현재 소켓 통신에 대해 공부중인 학생입니다.

현재 서버에 3개의 클라이언트가 접속하여,

3개의 클라이언트가 주는 int 값들을 서버에서 합하고,

서버에서 다시 반환해주는 코딩을 짜고 있습니다.

예로,

client1 ->2
client2 ->4
client3 ->6

값을 보내면,
서버는 12를 각 client1,2,3한테 반환하는 프로그래밍입니다.

소스코드 내용은

main 함수에서

'int cli_sockfd[3];'

로, 3개의 소켓 fd 값을 받아놨고요.

'pthread_t thread_t[3];'

다중 클라이언트 접속을 위해, Thread id 받는 인자를 3개 만들어두었습니다.

서버에서 값을 반환할때는,

trymp의 이미지

정규표현식을 사용할 때 regex_t 가 thread safe 한가요?

Main thread
  regex_t	preg;
  regcomp(&preg, exp_str, REG_EXTENDED | REG_NEWLINE);
 
 
Sub threadA
  regexec(&preg, match_str1, 0, NULL, 0);
 
Sub threadB
  regexec(&preg, match_str2, 0, NULL, 0);

위와 같이 Main thread 에서 regex_t handler 를 미리 컴파일해 놓고

sub thread A와 B 가 같이 사용할 때,

side effect 가 생기거나 버그가 생길 확률은 없나요?

regex_t 를 공유해서 쓸 때 thread safe 상 문제가 없는지 궁금합니다.

고수님들의 조언 부탁드립니다.

ddk7788의 이미지

CentOS 6 버전 사용중인데 좀 심각한 오류가 발생해서 질문드립니다.

CentOS 6 버전 사용중 부팅이 안되서 부팅오류 수정후 들어가보니 좀 심각한 데이터 손상으로 보이는 상황이 발생했습니다. 아래는 상황 정리입니다.

1. 데이터 파일 용량은 존제하나 vi로 열었을때 파일이 아무것도 기록이 안되있음
2. 위와같은 사항이 일어나는파일이있고 일어나지 않는 파일이 있음.
3. 소프트웨어로 하드를 레이드시스템 적용해서 사용중인데 총 4개의 하드를 2개+2개 로 묶어서 사용중인데 한개의 레이드 시스템은 문제없으나 나머지 하나의 레이드 시스템에서 문제 발생한듯 보임.
4. e2fsck/fsck 를 이용해서 오류수정및 검사는 완료했는데도 오류가 발생.
5. ftp를 이용해서 자료를 받으려고 했으나 오류로 인해 전송 불가.

위와같은 사항이 발생되었습니다. 콘쉘이나 다른쉘도 실행시 오류가 발생했구요;; 한개의 레이드 시스템에서만발생한것 같습니다.
혹시 이럴때 어떤게 문제인지 궁금합니다. 아래는 추가적인 질문사항입니다.

ponicon3의 이미지

#define 사용 시 멤버 변수를 for문 인자로으로 받을 수 없나요?

다음과 같은 코드는 정상 동작 합니다.
#if 1
#define INT_i(n) int i##n = n;
#define SUM(res, n) (res) += i##n
#define PRINT(n) printf("i%d = %d\n", n , i##n)

int main()
{
int res=0;
int i;

for(i=0; i<2; i++)
{
INT_i(i);
PRINT(i);
SUM(res,i);
}

printf("결과 : %d\n", res);

return 0;
}
#endif

**실행결과**
i0 = 0
i1 = 1
결과 : 1

leeki07의 이미지

대용량 파일의 내용은 살리고 용량은 줄이는 법

계산기에 자동 저장되는 error.log가 1Gbyte이상이 되어 있음을 발견하였습니다.
완전히 지우기는 부담스럽고 내용만 줄이고 싶어서 vi로 열어 보았으나
수분을 기다려도 열리지가 않네요.
최근 log는 남기고 용량을 줄이고 싶은데 방법이 없을까요?

tail -n 500000 error.log > gomi
cat /dev/null > error.log
cat gomi >> error.log

요렇게 해도 될까요???

ivory0321의 이미지

중위표기식을 후위표기식으로 변환

#include
#include
#include
using namespace std;
stack s;
char print[99999];
int i=0;
int precedence(int op){
if (op == '(') return 3;
if (op == '+' || op == '-') return 1;
if (op == '*' || op == '/') return 2;
else return 0;
}
int cal(char a){
if(a=='('){
s.push('(');
}
else if(a==')'){
while(s.top()!='('){
print[i]=s.top();
i++;
s.pop();
}
s.pop();
}
else if(a=='+'||a=='-'||a=='*'||a=='/'){

dudrl0944의 이미지

회사에서 어떻게 작업하시는지 이야기를 듣고 싶습니다.

현재 다니시고 계시는 회사에서 주로 무엇을 어떻게 작업하시는지 알고 싶습니다.
번거롭더라도 간단하게 알려주시면 감사하겠습니다.

슈퍼공돌이의 이미지

세마포어 기초.. 질문입니다.

안녕하세요.. C 언어로 세마포어를 공부하고 있는 학생입니다.
지금은 두 쓰레드를 생성하여서 producer, consumer구조를 만들고 있습니다.
결과가 좀 생각한것과 달라서, 조금 당황 스러워서 질문을 올리게 되었습니다.
mutex는 1, full은 0으로, empty는 100으로 초기화하였습니다.
저는 producer하고 consumer가 랜덤하게 호출될줄알았는데
producer 100번 consumer 100번 번갈아 호출되더군요....
producer에서 sem_post를 호출하면 다른 쓰레드인 consumer로 도중에 스위칭되어야하지않나요?
왜 100번 호출되어야 consumer가 호출되는지 이해가 안갑니다 ㅠㅠ
조언좀 부탁드립니다.

Producer부분

wflore의 이미지

멀티쓰레드 C언어 소켓 프로그래밍 문의

안녕하세요
이번에 C언어로 다중 클라이언트 접속 가능한 서버를
Thread를 혼자 공부 후, 코딩을 짜고 있는 학생입니다.

동작과정은
서버는 3개의 클라이언트로부터 int 값을 1개씩 받고,
받은 int 값을 result 변수에 모두 합하여,
각 클라이언트로 동시에 다시 반환해주는 것을 연습하고 있습니다.~

-서버의 내용-

#include
#include
#include
#include
#include
#include
#include
#include

#define MAXLINE 1024

int result;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

mathewpark90의 이미지

루비 온 레일즈에서 MySQL 쿼리문..

안녕하세요.

.find_by_sql() 으로 쿼리문을 수행하고자 합니다..
Test 테이블을 만들어서 tests 테이블로 실질적으로 마이그레이션을 수행했고 스키마는 word(varchar), url(varchar)가 있습니다.

select * from tests where
(select url from tests where word="dog")
=
(select url from tests where word="cat");

위의 구문은 MySQL에서 정상적으로 동작합니다.
하지만, 루비 온 레일즈에서 Test.find_by_sql(["select * from tests where (select url from tests where word=?) = (select url from tests where word=?)", "dog", "cat"]) 로 실행하는데 에러가 나네요.

페이지

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