консоль линукс; Ошибка CLS не найдена

Я пытаюсь скомпилировать проект C, который я написал, когда использовал окна. Я пытаюсь скомпилировать тот же проект с той же IDE (Code::Blocks) в Linux (Ubuntu 12.04). В моей программе используется несколько функций System("CLS"). Но консоль linux говорит
sh: 1:CLS: not found
Segmentation fault (core dumped)

Я включил <stdlib.h> и <stdio.h> (и, конечно, несколько).


person pranphy    schedule 14.11.2012    source источник
comment
Если вы хотите, чтобы ваш код был переносимым, вы не можете вызывать произвольные системные команды, которые могут существовать или не существовать в какой-либо конкретной системе. Фактически, вы не должны предполагать, что в системе есть экран, пока не проверите, есть ли он. Что будет делать CLS, если вы разговариваете с построчным принтером или механизмом преобразования текста в речь? Что бы он сделал, если бы ваш вывод был перенаправлен в файл?   -  person David Schwartz    schedule 14.11.2012


Ответы (3)


Проблема в том, что команда CLS существует только в Windows. Для Linux вам нужна команда: clear.

В любом случае, это лишь частично решит проблему: а) у вас будет та же проблема, если вы перенесете свою программу на компьютер с Windows, и б) нет причин для того, чтобы это приводило к ошибке сегментации.

person Baltasarq    schedule 14.11.2012

Команда system запускает команды оболочки в вашей локальной системе. cls — допустимая команда DOS/Windows, но ее нет в Linux. Команда clear в Linux предоставляет аналогичную функциональность.

Ошибка сегментации предполагает, что вы неправильно обрабатываете ошибку.

person larsks    schedule 14.11.2012

CLS — это старая команда MS-DOS, которую вряд ли можно найти на вашем компьютере с Linux. Вы не должны полагаться на создание другого процесса для очистки текста консоли. Вы можете вызвать clear или использовать escape-коды ANSI для выполнения работать на вас. Ни один из них не является портативным, но оба широко используются.

person user7116    schedule 14.11.2012