Korrekt.
Das "ls" oder was auch immer Programm schreibt seine Ausgabe auf den Filedeskriptor mit der Nummer 1. Woher der kommt, weiß er nicht und kann ihm auch egal sein. Wenn Du close(1) machst, dann ist der Dateideskriptor 1 geschlossen und das Kind-Programm bekommt beim Versuch, etwas darauf zu schreiben, einen Fehler.
Hallo Zusammen
Ich hoffe es kann mir da jemand helfen . Ich selber bin ein c# noob
Ich bekomme die Beispiele von ADS Server und ADS Client nicht kompiliert.
der link
http://rapidshare.com/files/229124534/gass-libads_linux.tar.gz
mfg Systemlord
Hi Leute
ich hab bei mir privat etwas unter Linux mit boost::threads entwickelt, was ich nun hier in der Firma auch nutzen will.
Beim Compilieren kommen diverse Fehlermeldungen:
Description Resource Path Location Type
»boost« wurde nicht deklariert GenAlg.cpp GeneticsServer/src line 48 C/C++ Problem
»boost« wurde nicht deklariert GenAlg.cpp GeneticsServer/src line 54 C/C++ Problem
»boost« wurde nicht deklariert GenAlg.cpp GeneticsServer/src line 67 C/C++ Problem
»boost« wurde nicht deklariert GenAlg.cpp GeneticsServer/src line 95 C/C++ Problem
»boost« wurde nicht deklariert GenAlg.hpp GeneticsServer/src line 37 C/C++ Problem
»boost« wurde nicht deklariert Population.hpp GeneticsServer/src line 36 C/C++ Problem
»boost« wurde nicht deklariert Population.hpp GeneticsServer/src line 67 C/C++ Problem
»boost« wurde nicht deklariert Population.hpp GeneticsServer/src line 68 C/C++ Problem
»io_mutex« wurde in diesem Gültigkeitsbereich nicht definiert GenAlg.cpp GeneticsServer/src line 21 C/C++ Problem
/usr/include/boost-1_39/boost/thread/mutex.hpp #error "Boost threads unavailable on this platform" GeneticsServer line 18 C/C++ Problem
/usr/include/boost-1_39/boost/thread/thread.hpp #error "Boost threads unavailable on this platform" GeneticsServer line 19 C/C++ Problem
expected `;' before »lock« GenAlg.cpp GeneticsServer/src line 67 C/C++ Problem
expected »,« or »...« before »« token Population.hpp GeneticsServer/src line 36 C/C++ Problem
expected »;« before »« token Population.hpp GeneticsServer/src line 67 C/C++ Problem
expected »;« before »*« token Population.hpp GeneticsServer/src line 68 C/C++ Problem
expected »;« before »io_mutex« GenAlg.hpp GeneticsServer/src line 37 C/C++ Problem
ISO-C++ verbietet Deklaration von »mutex« ohne Typ GenAlg.hpp GeneticsServer/src line 37 C/C++ Problem
ISO-C++ verbietet Deklaration von »mutex« ohne Typ Population.hpp GeneticsServer/src line 67 C/C++ Problem
ISO-C++ verbietet Deklaration von »thread« ohne Typ Population.hpp GeneticsServer/src line 68 C/C++ Problem
Zusammengefasst: er bemängelt alles was Boost oder Mutex ist.
Wobei ich das KernProblem hier sehe:
/usr/include/boost-1_39/boost/thread/mutex.hpp #error "Boost threads unavailable on this platform" GeneticsServer line 18 C/C++ Problem
Diese Fehlermeldung entsteht direkt in thread.hpp und mutex.hpp ( eigentlich bestehen die Dateien bei mir fast nur aus dieser Fehlermeldung ).
Betriebssystem: CentOS 5.3 ( RedHat 4.1 )
Entwicklungsumgebung: Eclipse
Compiler: g++
Hatte jemand schonmal das Problem?
Also erstmal danke für die schnellen Antworten.
Ich werde mir das mal alles durchlesen und mal schauen, ob ichs damit hinbekomm
PS.: lol, mir ist gerade bewusst geworden, dass listen gar nicht blockt, sondern accept xD
das löst natürlich das Problem^^
wenn wir schonmal beim thema benutzer sind,
wie kann ich denn einem programm sagen, dass z.b. als root gestartet wurde es soll nun unter dem benutzer xxx und gruppe yyy laufen?
lg duderino
Re,
habe nun das komplette sdk installiert also die .bin von der Trolltechseite. Wollte nun mal das simple "Hello World" testen und bekomme folgende Meldung collect2: ld gab 1 als Ende-Status zurück.
Das kompileren selbst sollte nun aber gehen ich sollte mal nach einem passenden Tutor suchen.
danke
Franknborder
Edit: Ich bekomme diese Meldung bei allen Codebeispielen die ich probiere also muss immer noch was nicht stimmen, ich habe mal ganz einfach ein einfaches Rechenbeispiel als c Quelltext in einem Texteditor geschrieben und über die Konsole compiliert und dann mein a.out ausgeführt. Zuerst hatte ich hinter das Textdokument vergessen das .c anzuähngen und ich erhielt dieselbe Meldung, dannach das .c angehängt und es ging. Der Creator müsste doch auf den Compliler gelinkt sein habe mal geschaut da steht was von c Make und executable unter den Optionen dort habe ich den Pfad zum gcc in /usr/share/bin/gcc. Hilft aber auch nicht.
Edit: So alles klar der g++ muss gelinkt werden nicht gcc.
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
Ein (x)inet-Daemon ist eigentlich sehr einfach gebaut: Du liest die Anfragen über stdin und schickst die Antworten auf stdout. Wenn Du die Verbindung schließen willst, beendest Du das Programm.
Für den Rest verweise ich auf die Antwort von ProgChild - ein simpler HTTP-Parser, der das Protokoll erkennt, die Header sammelt und den Body in einen Puffer legt, sollte einfach zu stricken sein.
Habe es geschafft dass eine Verbindung besteht aber es führt das Programm nicht aus.
if (ForkPID == 0) {
close(listenfd) ;
dup2(connfd, 0);
dup2(connfd, 1);
execlp("/media/datei/programm","programm",(char *)NULL);
}
Mit dem wird das Programm aufgerufen. Wenn ich jetzt den Server starte und versuche das Programm aufzurufen mit telnet localhost 6666 erscheint dieser Text aber das Programm wird nicht ausgeführt. Was kann der Fehler sein.
datei@datei:/media/datei$ telnet localhost 6666
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
MfG
So, mein Treiber ist fertig.
Eine Seite C++, 10 Zeilen Ruby: Und fortan kann ich meiner Remote (und eigentlich allen anderen Inputgeräten auch) Events zuordnen: Lautstärke ändern, Song wechseln, Desktop aktivieren usw... Einfach, aber funktioniert.
Wer den Quellcode haben will, soll sich melden
Edit: Wer nette Commandline Shortcuts für Gnome kennt, möge sich auch bitte melden.
Alternativ könntest du natürlich auch einen Wert aus /dev/random als seed lesen. Das sollte dann deutlich zufälliger sein
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
void seed_dev() {
int fh = open("/dev/random", O_RDONLY);
unsigned int seed;
if(fh < 0) {
seed = time(0) + getpid(); // fallback
}
else {
read(fh, &seed, sizeof(seed));
close(fh);
}
srand(seed);
}
qsid20 schrieb:
Scheinbar ist ja das * Symbol schon belegt mit einer build-in funktion? Ich wusste aber nicht wonach ich googlen sollt weswegen ich die Frage jetzt hier poste.
Das Symbol wird von der Shell noch bevor dein Programm startet durch die zutreffenden Dateinamen ersetzt. Wenn du das nicht willst, kannst du, wie hier schon gesagt, dein Programm so aufrufen:
./pgm "3 * 5"
Blu-Ray schrieb:
Epoll ist platformabhängig oder? Gibt es davon eine unabhängige Funktion?
Ich werde zuerst mal die Lösung von devkid ausprobieren. Vielen Dank!
Naja entweder select oder was auch sehr nett sein soll ist libevent.
Schumi schrieb:
Meine Frage lautet wie ich mit zwei Programm gleichzeitig auf das Interface ansprechen.
Vermutlich garnicht. Diese Schnittstelle baut eine serielle Verbindung zwischen dem Computer und deinem Handy auf. Da kannst du nicht einfach in eine bestehende Verbindung eingreifen. Das wäre so, wie wenn zwei Leute sich unterhalten und dann kommt einfach ein dritter dazu, stellt sich in die Mitte und fängt einfach an irgendwelches Zeug zu reden. Am Ende versteht keiner mehr was.
Du müsstest entweder das Einwahlprogramm komplett selber schreiben oder schauen, ob das Programm oder der Kernel dir die Informationen liefern, die du brauchst. Schau mal unter /proc/net.
TLEP schrieb:
Aber sonst kannst du auch selbst die Verbindung aufbauen via Socket. Ist allerdings mit etwas Aufwand verbunden(url parsen, Socket einrichten, Verbindung einrichten, entsprechendes Kommando senden(GET?), und die Daten empfangen).
Nein, der Vorschlag mit libcurl ist schon deutlich besser.