PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unix programmieren


Lord_Otter
11.08.2002, 14:39
Hi Leute !
Ich benutze momentan Turbo C++ 3.0. Gibt es eine bessere Version, mit der man auch Unix-Programme erstellen kann ?
Ich habe auch C++ 5.5, aber mit der Version geht das nicht.
Und noch eine Frage:
Ich wollte bei Turbo C++ 3.0 mal ein Unix-Programm
schreiben, dass den Befehl getch() verwendet.
Mein Code sah so aus:

#include <conio.h>
int main()
{
printf("Bitte Taste drücken !");
getch();
return 0;
}


Aber conio.h ließ sich nicht einbinden. In der Hilfe steht, dass getch() auch in eimen Unix-Programm verwenden lässt, aber wie ?


TekWarrior
11.08.2002, 15:25
Mit TurboC++ wird das nicht gehen, denn der Linker erstellt MS-DOS .exe Dateien. Diese laufen nun mal nicht unter Unix. Wenn dann musst du schon einen für Unix benutzen.

MrEasy
11.08.2002, 16:03
bzgl. der conio.h: es kann sein, dass turbo c die headerdatei einfach nicht hat, bei borland c++ war das bei mir mal der fall

wenn du für unix kompilieren willst, nimm doch einfach den gnu compiler

Lord_Otter
11.08.2002, 18:59
Doch, das geht mit Turbo C++.
Ich kann auswählen, für welche Plattform ich mein programm compilieren will.
Ich kann C++, AnsiC, Unix und noch irgentwas auswählen.

Lord_Otter
11.08.2002, 19:01
Achja, mein Programm kann ich für MS-DOS kompilieren. Also ist die Datei conio.h vorhanden. Aber für Unix funktioniert diese conio.h nicht, da kommt ein Fehler. Aber für DOS geht diese Datei.
Welchen GNU-Compiler ?

Mephisto_I
12.08.2002, 09:54
Original geschrieben von Lord_Otter


#include <conio.h>
int main()
{
printf("Bitte Taste drücken !");
getch();
return 0;
}



Hallo Lord_Otter!

Wieso benutzt du in C++ printf() ? Besser ist, du benutzt Streams.
Schreibe besser:


#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
cout << "Bitte Taste drücken!";
getch();
// Das 'return 0;' kannst du weglassen, der Compiler setzt es selbst dorthin.
}


Musst du unbedingt <conio.h> benutzen? Es gehoert nicht zum C++-Standard und kann daher nur von wenigen Leuten genutzt werden; naemlich von denen, die Borland-Produkte einsetzen. Dass es dabei zu Problemen kommen kann, siehst du ja gerade selbst. :)

Wenn es dir nur darum geht, auf einen Tastendruck zu warten, wuerde ich folgende Version vorschlagen, die jeder kompilieren kann:


#include <iostream>
#include <string>

void waitForNewline()
{
std::string dummy;
std::getline(std::cin, dummy);
};

int main()
{
std::cout << "Hallo, Welt!" << std::endl;
std::cout << "Bitte 'Enter' druecken..."; waitForNewline();
std::cout << "Und nochmal: Hallo, Welt!" << std::endl;
}


Mit solchen Loesungen bist du immer auf der richtigen Seite.

HTH
Mephisto_I

Lord_Otter
12.08.2002, 11:41
Ich kenn diese Streams.
Aber die lassen sich leider auch nicht einbinden...:confused: :confused:

Mephisto_I
12.08.2002, 13:08
Original geschrieben von Lord_Otter
Ich kenn diese Streams.
Aber die lassen sich leider auch nicht einbinden...:confused: :confused:

Es tut mir Leid, aber dann benutzt du einen sehr schlechten Compiler bzw. einen Compiler mit einer veralteten Standardbibliothek. :( So kann man wirklich nicht vernueftig arbeiten, da hast du recht.

Ich wuerde dir zunaechst empfehlen:

fuer Windows: Dev-C++ (google mal danach!)
fuer Linux: gcc (dito)


HTH
Mephisto_I

Baegsch
12.08.2002, 18:48
jaja... wer *nix software entwickeln will, der sollte schon an ner *nix kiste sitzen! Da kann dein compiler noch so viel schwafeln wie er will..

$> man 3 getch

NAME
getch, wgetch, mvgetch, mvwgetch, ungetch, has_key - get
(or push back) characters from curses terminal keyboard

SYNOPSIS
#include <curses.h>

int getch(void);
int wgetch(WINDOW *win);
int mvgetch(int y, int x);
int mvwgetch(WINDOW *win, int y, int x);
int ungetch(int ch);
int has_key(int ch);



conio ist nämlich nur ein billiger Abklatsch der curses Bibliothek ;)

Lord_Otter
12.08.2002, 20:30
Ah, danke !

Lord_Otter
23.08.2002, 18:54
Ach ja, wie kann man die jetzt eigentlich starten ?
Auf eine Startdiskette packen und den Rechner booten oder wie ?

Mephisto_I
23.08.2002, 19:17
Original geschrieben von Lord_Otter
Ach ja, wie kann man die jetzt eigentlich starten ?
Auf eine Startdiskette packen und den Rechner booten oder wie ?

Was meinst du jetzt? :)

Gespannt wartend
Mephisto_I

Schaf
23.08.2002, 19:49
Original geschrieben von Lord_Otter
Ach ja, wie kann man die jetzt eigentlich starten ?
Auf eine Startdiskette packen und den Rechner booten oder wie ?

*argh* brauchst natürlich unix oda linux für!

Lord_Otter
24.08.2002, 08:35
Mir ist klar, dass ich das mit Unix oder Linux ganz einfach starten kann, aber das ght auch anders: Wenn ich den Rechner mit Linux boote, startet er gleich ein Unix-Instllationsprogramm. Dabei habe ich garkein Linux drauf. Das muss ja heißen, dass amn Unix-Programme auch auf einem Dos/Windows-System starten kann.

Jan Krüger
25.08.2002, 20:07
auf der Linux-/UNIX-CD ist dann aber eine abgespeckte Fassung des Betriebssystem drauf. Wenn du es schaffst, Linux/UNIX auf Diskettengröße zusammenzuschrumpfen und zwar so, dass dein Programm auch noch draufpasst, dann kannst du das machen, allerdings musst du dich, um das System so klein zu kriegen, recht gut damit auskennen.

Lord_Otter
25.08.2002, 20:16
Oje, nein danke !
Darauf kann ich (noch) verzichten. Installier' ich halt wieder Linux, odr benutze linux 8.0 ohne Installation.

Baegsch
28.08.2002, 15:17
hehe, denk mal du meinst eher suse 8.0 ;) Aber mal zum Thema: Ich glaub es gibt da so ein Projekt mit dem man elf binaries für linux auch auf win laufen lassen kann. www.cygwin.com .. hab es aber noch net getestet...

Lord_Otter
28.08.2002, 16:29
Das ist ja interessant, danke !