2012-11-14 2 views
-3

Windows를 사용하면서 작성한 C 프로젝트를 컴파일하려고합니다. 같은 IDE (코드 :: 블록)와 동일한 프로젝트를 Linux (Ubuntu 12.04)에서 컴파일하려고합니다. 내 프로그램에 여러 개의 System("CLS") 함수가 사용되었습니다. 하지만 리눅스 콘솔은
sh: 1:CLS: not found
Segmentation fault (core dumped)

을 포함하고 있습니다. 여기에는 <stdlib.h><stdio.h> (물론 여러 개 포함)이 포함되어 있습니다.Linux 콘솔; CLS not found error

+0

'시스템()'이란 무엇입니까? –

+1

코드를 이식 가능하게하려면 특정 시스템에 존재할 수도 있고 존재하지 않을 수도있는 임의의 시스템 명령을 호출 할 수 없습니다. 사실, 시스템이 화면에 있는지 확인하기 전에는 시스템에 화면이 있다고 가정해서는 안됩니다. 라인 프린터 또는 TTS (text-to-speech) 엔진과 대화하는 경우 "CLS"는 무엇을할까요? 출력물이 파일로 리디렉션 된 경우 어떻게됩니까? –

답변

7

문제는 CLS 명령은 Windows에만 존재한다는 것입니다. Linux의 경우 원하는 명령은 clear입니다.

어쨌든 문제가 부분적으로 만 해결됩니다. a) 프로그램을 Windows 컴퓨터로 이식하는 경우 동일한 문제가 발생할 수 있으며, b) 세그먼트 화 오류가 발생할 이유가 없습니다.

2

system 명령은 로컬 시스템에서 쉘 명령을 실행합니다. cls은 유효한 DOS/Windows 명령이지만 Linux에는 존재하지 않습니다. Linux의 clear 명령은 유사한 기능을 제공합니다.

세그먼트 화 오류로 인해 오류를 올바르게 처리하지 못했음을 나타냅니다.

1

CLS는 Linux 컴퓨터에서 발견되지 않는 오래된 MS-DOS 명령입니다. 콘솔 텍스트를 삭제하기 위해 다른 프로세스를 생성하는 것에 의존해서는 안됩니다. 이 작업을 수행하려면 clear 또는 use ANSI escape codes으로 전화하십시오. 휴대용도 아니지만 둘 다 폭넓게 사용됩니다.