UNIX support with C compiler!

11 отговора 360 прегледа
#1

UNIX support with C compiler!

Hi,
Може ли някой да ми каже каква функция да използвам под С за UNIX/Linux така, че да мога да 'изтривам' екрана?
И още ....
Да ми кажете за 'C' компилатор, който да може:
- да поддържа 8086 ... pentium IV процесори | Alpha | Motorola 68K .. 80K
- "инклуде" файлове, които да са DOS, UNIX, ANSII C и стандартна(първоначална - при създаването му) поддръжка
- да може да компилира Асемблер код (не като Borland C ++, нуждаещ се от TASM)
exit(1); /* Bye */

Отговор
в отговор на mialy #2

Re: UNIX support with C compiler!

по първия въпрос -- clear > myfile.txt
гледаш после кой символ е написан във файла и знаеш, че като го принтнеш, ще изчистиш екрана... има го и в документацията ама познай как ми се търси сега.

втория въпрос също има отговор -- gcc

лирически изпълнявам въоръжени грабежи
Отговор
в отговор на Meндeлeeв #3

Re: UNIX support with C compiler!

Имам в предвид нещо като clrscr(void); /* за DOS */ , но за УНИКС/Линукс.
А за GCC - поддържа ли 8086 процесори? Аз си мисля, че поддържа над 386.

Миалий.

Отговор
в отговор на milay #4

Опа - сгреших си прякора (добре, че се реги...)

миалий

Отговор
в отговор на milay #6

Re: UNIX support with C compiler!

ако имаш да правиш много триенета на екрана -- правилния начин е с намирането на символа и директния печат... ако е за един път --> system("clear"); е перфектно решение

колкото за gcc... не бях видял, че става въпрос за 8086 процесор... но пък самия линух иска 32 битов процесор т.е. от 80386 нагоре

лирически изпълнявам въоръжени грабежи
Отговор
в отговор на mialy #7

Re: UNIX support with C compiler!

mislja che trjabwa da izpolzwash ncurses za da napravish tova (sushto i da pozicionirash kursora si - ako iskash).

mozhe da widish tvision.sourceforge.net tova e TurboVision suvmestima biblioteka za sumati platformi - tam ima unix-ski i windows-ski kod - i mozhe da widish kak stava i pod dwete. - sushto wizh setedit.sourceforge.net - tova puk e textov redaktor i za dvete (w konsolen rezhim).

inache nikoga ne sum pisal s ncurses (ili curses??) - popitaj w linux-grupata tam mozhe da znajat.

tirulirutatuutuu
Отговор
в отговор на mialy #8

Re: UNIX support with C compiler!

1. Obyasnili sa ti.
2. GCC. Ima go vyv vsyaka Linux i *BSD distribuciya. A ima versii i za kakvo li ne oshte (SCO, Solaris, HP-UX, etc...). Ne poddyrja 80x86, x < 3, ama i edva li ti tryabva - nyakakvy UNIX za 286 moje da se napishe, no za 8086 - nyc. Makar, che sym chuval, che XENIX (Microsoft-ski UNIX) nyakoga e vyrvyal i na XT... Ama ne vyarvam - bez zashtita na pametta e bezsmisleno da se pravi mnogopotrebitelska OS. Proveri i ELKS.
3. Vyrvyat si s kompilatora, razbira se. Nyama conio.h.
4. GCC moje (to taka i kompilira - generira source na asembler, i go puska na as (otdelna programka, chast ot binutils)), no za kakvo ti e? Asembler dori v kernelite pochti nyama, UNIX e izmislen imenno s tazi cel - da ne se polzva asembler.

kill(getpid(), SIGSEGV);

Отговор
в отговор на mialy #9

Re: UNIX support with C compiler!

> Може ли някой да ми каже каква функция да използвам под С за UNIX/Linux така, че да мога да 'изтривам' екрана?

Функцията е печат в стандартния изход на ESC последователността 'ESC [ 1 J'. Напр. в bash изглежда така:

#!/bin/bash
echo ^[1J

Символът ESC се въвежда във vim с Ctrl-V Ctrl-[

На C изглежда така:

#include <stdio.h>
int main()
{
printf("\033[1J\n");
return 0;
}

За останалите ESC последователности виж man console_codes.

> Да ми кажете за 'C' компилатор, който да може:
> - да поддържа 8086 ... pentium IV процесори | Alpha | Motorola 68K .. 80K

Да, всички тези и много други: [линк]

Отговор
в отговор на . #10

Security 101

> system('clear');

Никога, ама _никога_ не използвай system() в програмата си, за да минеш по-леко. Това значи сам да си търсиш белята.

Да речем, аз искам да те атакувам и имам достъп до системата като обикновен потребител. Правя си програма, с името clear и пускам твоята програма по следния начин:
$ PATH=.; a.out

В следствие на това вместо оригиналния clear ще се изпълни моята програма, която прави не това, което си имал предвид.

Дотук нищо страшно, понеже програмата се изпълнява с моите права, които са ограничени. Ако администраторът обаче направи a.out по някаква причина suid root, разчитайки, че тя върши само нещата, за които е предвидена, изведнъж аз се озовавам с правата на суперюзър и системата е оставена на милостта ми.

Как ще се сетя да подменя точно clear, ако не съм виждал сорса? Ами ще пусна
strings a.out | less
и ще пробвам всеки текст, който прилича на известна команда. Едва ли ще ми отнеме повече от 15 минути.

Отговор
в отговор на mialy #11

Re: UNIX support with C compiler!

И все пак, ще ми кажете ли какъв компилатор да си намеря!
Такъв, че да мога да правя ОС-та (не само Линукс)!
>>е, добре де не ОС-та, а просто програми, независещи от отделни операционни системи.

Случайно Windows на какъв компилатор е правен?

миалий

Отговор
в отговор на mialy #12

Re: UNIX support with C compiler!

ubi me napravo :))

nachi za da si napravis OS pyrvo TI trjabva da napises compiler za da napises kernel-a s nego, posle da si izberes filesystem za da zapises kernela tam.

kvo se opitvas da napravish - njakva embeded prostotia ili prosto iskas da napravis njakoe staro PC dedicated za nesto-si.

Syvet - zaebi taja rabota. Po-skoro zemi 386 basirano PC, pak struva tolkoz, ama sha si spestis kamara nesta svyrzani s pisaneto na kernel. Kato gledam - ekrana ne znaes kak da izchistis ... a kak sha napravis memory management (primerno)

Ne go priemaj licno, gledam ima zelanie da se uci - nachi sha se naucis i ti njakoj den.

Отговор