프로그래밍 QnA

hammer의 이미지

signal과 socket

시그널 대기하는 sigprocmask를 써서 제가 짜고 있는
프로그램에 적용할려고 하니
에러가 나더군요. (accept부분에서 Interupted System call이라고..) 소켓 연결도 하지 않았는데 말입니다.
짤막한 저의 프로그램을 소스를 보여드리면..

[code:1]int main()
{
int i = 0;
struct sigaction intsig, usrsig;
.........
........

usrsig.sa_handler = sig_usr;
sigemptyset(&usrsig.sa_mask);
usrsig.sa_flags = 0;

intsig.sa_handler = sig_int;
sigemptyset(&intsig.sa_mask);

epcube의 이미지

inode에 관한 질문...

리눅스커널의 이해란 책을 보다가 궁금한게 생겼습니다.

각 블록 그룹이 4096개의 inode를 포함할 수 있고,
inode가 13021번이라면 이 inode는 디스크상에서
3번째 블록그룹에 속하고, disk address는 inode table의
733번째 엔트리에 저장되어 있다고 책에 나옵니다.

그런데 13021을 4096으로 나누면, 몫이 3이고 나머지가 733입니다.
그러면 이 inode는 4번째 블록그룹에 속하는게 맞지 않나요??

왜 책에서 3번째 블록그룹이라고 했는지 이해가 안갑니다.

young93의 이미지

gcc로 링크 중 에러 : undefined reference to `xxx

다른 OS에서 다른 컴파일러로 만들었던 프로그램을 리눅스로 포팅중입니다.
프로그램은 여러 블럭으로 이루어져 있고
각 블럭을 컴파일하면 라이브러리 파일을 생성합니다.
마지막에 그 라이브러리를 링크하여 실행파일을 만들죠.

컴파일까지는 잘되는데 링크를 하면
undefined reference to `xxx' (xxx는 함수명 또는 전역변수명)
라는 에러가 수십개씩 나오네요.

분명히 다른 블럭의 라이브러리(*.a)에 있는 함수인데, 없다고 그럽니다.
라이브러리를 만들지 않고 그냥 오브젝트 파일(*.o)을 링크하면 잘 됩니다.

soohyunc의 이미지

gcc cross-compiler

안녕하세요? 처음으로 질문 드리는데요...
개발을 하다보니, 다음과 같은 질문이 생겼어요.

gcc Cross-Compiler 라는 것을 build 해야한다는데, 이것이 어떤건지 생소합니다.

1) gcc cross-compiler는 무엇인지요?
2) gcc cross-compiler를 구축하려면 어디에서 어떤 소스를 받아서 어떤 방식으로 설치 해야하는지요?

제가 사용하는 OS는 SunOS 5.8 입니다.

감사합니다.

rainblow의 이미지

솔라리스에 GDB를 설치할때 configure에러..

Unix / Linux를 처음 배우고 있는 사람입니다.
책에 나온걸 보고 GDB를 써볼려고 하니까, GDB가 설치되어있지 않더군요.
그래서 GNU사이트에서 다운을 받아서 설치하려고 하는데,
README를 읽고 해보려니 에러가 나네요.

./configure를 실행하니까.. 스크립트가 실행되다가 중간쯤에..

checking if gcc static flag -static works... yes
finding the maximum length of command line arguments... expr: syntax error
expr: syntax error

./../ltconfig: test: argument expected
configure: error: libtool configure failed

purewell의 이미지

중복 실행 막기

ㅡ_-)v Windows의 팁으로는 Mutex 객체(아마 MFC팁에서인 듯...)를

이용해서 동일 프로세스가 돌아가는 것을 막았는데

ㅡ_-)a 리눅스에서는 어떻게 해야하나요!?

나름대로 돌을 굴려본 결과로

pid 파일을 만들고 그 파일을 쓰기락을 걸면

동일 프로세스가 그 파일을 쓰려고 할 때, 쓰기 실패가 일어나면

이미 동일 프로세스가 돌아가는 것으로 인식하는...

어떻게 해야하나요~?

Always wish be pure well...

yhjj777의 이미지

cygwin에 대한 질문입니다..

그동안 리눅스에서 프로그래밍을 해왔는데 테스트하기가 너무 불편해서
윈도우에서 cygwin을 이용하려고 하는데요. 퍼포먼스는 제쳐두고
cygwin과 리눅스에서 프로그램이 동일하게 작동하는지 궁금합니다..

lunar의 이미지

printk("Hello...") 을 했는데.. /var/log/message..

흐흐.. 계속 무대뽀로 .. 해보는 중입니다..
버전은 -f옵션을 주닝.. 경고가 떠고 .. 올라가긴 하네요..
그런데 문서를 보면.. /var/log/message에 보면.. 출력 내용이 나온다고 하는데요..
아무것도 안나와여..
tail로 봐도 .. 그렇고.. 그래서 .. 아예통채로 봐도 없네여..
lsmod 하면 올라가긴 한거 같아요..

^^ 계속 질문드려서 귀찮으시더라도 ..
가르쳐주세요..^^ :oops:

lunar의 이미지

커널프로그램 짜서 .. insmod할때 버전이 안맞는데 ..

ms_optical_driver.o: kernel-module version mismatch
ms_optical_driver.o was compiled for kernel version 2.4.9-9
while this kernel is version 2.4.18-14.
위와 같은 에러가 나오구요....

소스는 여기에 있는 커널 프로그래밍을 참고해서 .. 해봤습니다.

[code:1]
#include <linux/kernel.h>
#include <linux/module.h>

#if CONFIG_MODVERSIONS==1
#define MODVERSIONS
#include <linux/modversions.h">
#endif

int init_moudle(){
printk("Hello, world -this is the kernel speaking\n");
return 0;

hurryon의 이미지

'\n' 값이 들어 가는것 같습니다만 어디서 들어가는건지?

'\n' 값이 들어 가는것 같습니다만 어디서 들어 가는지 알수가 없어서 소스을
올리게 되었습니다. 간단하게 주소록을 만들어 볼까 하는데 처음부터 이렇게
막히게 되네요.

[code:1]
#include <stdio.h>
#include <stdlib.h>

typedef struct
{
char name[10];
char address[30];
char phone[20];
char cell_phone[20];
char email[30];
} node;

node address;

void init();
void add();
void modify();
void delete();
void search();

페이지

프로그래밍 QnA 구독하기