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

greenfish의 이미지

ubuntu 시작 프로그램 등록법

현재 uck를 이용하여 custom live cd image를 만들고 있습니다.
해당 image를 이용하여 부팅할 때 시작프로그램을 등록하고 싶은데,
잘 되지 않아 물어보게 되었습니다.

/etc/xdg/autostart/foobar.desktop으로 하니 잘 되지 않더군요...
(아래의 1.은 잘되는데 2.는 안되더군요... 그리고 sudo gedit도 안되더군요)

다음은 어떻게 되는지 궁금합니다.

1. custom live cd로 부팅할 때에는 login이 필요하지 않습니다.
xwindow가 실행되었을 때 자동으로 '/usr/bin/gedit'가 실행되는 방법

2. custom live cd로 부팅핼 때에는 sudo 명령시 password를 입력하지 않습니다.
xwindow가 실행되었을 때 자동으로 터미널 콘솔 프로그램으로 'sudo man ls'가 실행되는 방법

fantagia의 이미지

32byte 보다 struct 사용시 에러 질문입니다. on gcc

struct  kk{
        int a;
        int b;
        unsigned int c;
        int d;
        int e;
        int f;
        int g;
        int h; // 이 라인에서 에러가 찍힙니다.
        int i;
        int j;
};

8번째 int값에서 꼭 에러가 납니다.
에러 내용은 이렇습니다.
expected ':', ',', ';' ,'}' or '__attribute__' before '.' token

7번째 int값까지 찍고 나서 8번째에 뭐라고 쓰든지간에 꼭 에러가 납니다.

구글링을 한참 했지만 잘 모르겠어서 이렇게 질문글을 올립니다.

구글링 결과

1>
매크로 괄호를 안닫아서 그렇다는 소리가 있는데 그건 잘 했습니다.

yundorri의 이미지

Shm으로 공유된 pointer에서 new 연산자로 생성한 영역은 공유를 할 수 없을까요?

안녕하세요, 눈팅 회원입니다. ^^

두 프로세스 A,B는 shared memory로 데이터를 공유하고 있고 그 내부에는 "char* p" 가 있다고 가정하겠습니다.
프로세스 A에서 p = new char[65535] 정도로 할당을 하였는데요,
프로세스 B에서는 p에 memcpy() 등으로 write하려면 segmentation fault error가 발생하는데요,

생각을 해 보면 p는 A에서 생성하였든, B에서 생성하였든 새롭게 생성된 영역의 주소를 가리키는 거라면
A든 B든, 나중에 새로 shared memory에 붙을 수 있는 C든 관계없이 접근 가능해야 된다고 생각되는데요
저렇게 오류가 발생하니 당황스럽네요.

그래서 나중에 든 생각은 p를 공유한 것이지, A에서 생성한 영역을 공유한 게 아니라서 그런가 생각이 들기도 하고...
그렇담, shared memory내에 동적으로 메모리를 할당할 방법은 없는가 궁금합니다.

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

breakd의 이미지

C++ 관련 문제인데 매개변수를 많이 사용할 수 있다는것이 오버로딩인지 가변인자 매크로를 사용하는 건지...

제가 영어 번역을 못하는건지 문제 자체를 이해 못하는 건지 모르겠네요;
프로그래밍 언어론 교재에서
C++ also allows functions to accept more parameters than those specified in the function definition. Why and how is this possible?
라는 문제가 있는데

이게 함수의 오버로딩에 대한 문제인지 함수 가변인자에 관한 내용인지 모르겠네요.
가변인자는 C 에서도 쓸 수 있는 걸로 아는데...(맞죠?)
allows to 가 문장에 있다는건 C 에서는 없는데
C++에서는 허락한다는 의미가 내포되어 있는 것 같으니 가변인자는 아닌 것같은데

해석을 해보면 또 함수 정의에 기술 된 것 보다 더 많은 파라미터 받아들이는 걸 허용한다는데
또 이렇게 놓고보니 오버로딩인가 싶기도 하고..

게다가 영어 해석 질문인 것같아서 여기 질문 드리는 것도 애매하네요.. ㅜㅜ

inviolable의 이미지

freopen함수에 대한 설명(리눅스, 표준 c라이브러리이기도 함)좀 이해시켜주세요(책에 나와있는).

FILE *freopen(const char *restrict pathname, const char *restrict type, FILE *restrict fp); <- freopen 함수 정의.

FILE 객체는 곧 스트림을 뜻하는 것이고...

책에는 이렇게 설명이 되어있는데 대체 뭔말인지 모르겠습니다.

2.freopen 함수는 지정된 파일을 지정된 스트림으로 연다. 스트림이 이미 열려 있으면 닫은 후 다시 연다. 스트림에 지향이 설정되어 있으면 freopen은 그 지향을 지운다. 이 함수는 지정된 파일을 미리 정의된 스트림(표준 입력, 표준 출력, 표준 오류)중 하나로 여는 데 주로 쓰인다.

inviolable의 이미지

파일은 열려있으나 스트림은 없는 경우(파이프나 네트워크통신 채널을 생성하는 함수와 관련있는 것 같네요...)

Unix 고급 프로그래밍 제2판(번역자 류광, 원서 Advanced Programming in the UNIX environment) 165페이지 fdopen함수에 대한 설명에서요.

3. fdopen 함수는 기존 파일 서술자(open이나 dup,dup2,fcnl,pipe,socket,socketpair,accept 함수로 얻은)를 받아서 그 서술자에 표준 I/O 스트림을 연관 시킨다. 이 함수는 파이프나 네트워크 통신 채널을 생성하는 함수들이 돌려준 서술자를 스트림에 연관시키는 용도로 자주 쓰인다. 그런 특수한 종류의 파일들을 표준 I/O fopen함수로 열 수 없기 때문에, 해당 장치에 고유한 함수를 호출해서 파일 서술자를 얻은 후, fdopen을 이용해서 그것을 표준 I/O 스트림과 연관시켜야 한다.

그리고 조금 건너뛰어서 fdopen함수의 2번째 인수인 type에 대한 설명입니다.(fopen, freopen의 2번째 인수이기도 함 이 3함수는 모두 표준 I/O스트림을 여는데 사용됩니다.)

inviolable의 이미지

리눅스 시스템 프로그래밍 공부하는 초보인데요 파일과 스트림에 대해서 몇가지 질문이 있어요.

표준 I/O함수로(시스템 콜 함수인 write말고)로 입력한다고 하면요... 표준 입출력함수 호출 -> 버퍼링 -> 버퍼링 정책에 따라 버퍼에 일정량 량이 찼을 때(전체 버퍼링이면 버퍼 전체가 다 찼을 때, 줄 단위 버퍼링이면 새줄 문자가 입력되었을 때) -> write함수 호출 -> 커널 내부 버퍼에 저장 -> 대기열(큐)에 등록(sync함수, 데몬 프로세스가 30초마다 수행) -> 한가할 때 큐에 있는 내용이 디스크에 저장됨.

이런 과정인 거 맞나요??

유명한 책인 Advanced Programming the UNIX Environment의 번역본(류광님이 번역자세요)인 UNIX 고급 프로그래밍 제2판 이라는 책인데요.

3.13절(제3장은 파일 I/O)에 sync, fsync, fdatasync함수를 설명하면서 이런 설명을 하셨어요.

armadillo의 이미지

vimscript에서 list관련..

반갑습니다.

vimscript를 배우면서 작은 script를 짜는데 제대로 동작을 안합니다.

script의 기능은

하나의 필드들이 하나의 라인으로 된 화일을 읽어서 후행공백(trailing spaces)을 없애고
다시 저장하는것인데...후행 공백 처리가 되지 않네요.

function! GetData()

let lst_line = line('$')
let col_size = 5
let item = ''
let items = []
let out_items = []

let items = getline(1, lst_line)

echo items

페이지

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