Dein CT_init(), sollte man(n/frau) nach Ausführung prüfen.
Anschließend solltest du einen vollständigen Reset auf das CT ausführen.
(s. MKT Spez. Teil 4, Kapitel 5.1)
lt. deinem Code, führst du ein RequestICC auf der
Karte durch, ohne vorab dein CT zu reseten...
dieser ist zudem auch noch falsch kodiert, da die Destination Adress (dad) dein
Card Terminal sein muß und nicht die SmartCard. Ergo -> dad = 0x01, wenn du
ein RequestICC beabsichtigst !!!
command[3] würde ich übrigens so kodieren 0x01, da in diesem Fall der vollständige ATR der Smartcard übergeben wird.
Die Kodierung von command[3] = 0x00 ist eigentlich NIE gut, da in diesem Fall
keine Rückschlüsse auf den ATR gezogen werden können.
Im Fachtürkisch.... woher du wissen welche Karte drinne ?
Richtig wäre der Ablauf eigent so...
1.) Zuweisung der CTN + PN
2.) CT_init ausführen
3.) Reset CT ausführen, das Instruction Byte INS = command[1] hat den Wert 0x11 ! Nicht 0x12
4.) RequestICC so wie oben aufgeführt.
Damit sollte es eigentlich funktionieren.
So ist zumindestens der Ablauf innerhalb meiner SmartCard-Komponenten.
MfG.
ProScan
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C 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.
Hi ruediger, ich mache das jetzt aber ich muss noch aufraeumen... Das Reallife und seine tueckken
Ich denke mal in so 3 Stunden hab ich die aenderungen fertig dann werde ich sie nochmal hochladen
http://www.google.com/search?hl=en&q=Verzeichnis+rekursiv+durchsuchen+cpp&btnG=Search&aq=f&aqi=&oq=
Erstes Suchergebnis:
http://www.ecodes.de/cbuilder/ansicht.php?ind=49
Ist zwar C++Builder, aber das zeigt dir das Prinzip wie es geht.
Den Code verstehen und umsetzen ist dann der nächste Punkt.
Hier mal die Links für die einzelnen Funktionien:
- Mauszeiger-Position abfragen: http://www.xfree86.org/4.4.0/XQueryPointer.3.html
- Mauszeiger bewegen: http://www.xfree86.org/4.4.0/XWarpPointer.3.html
- Mausklick simulieren: http://www.linuxquestions.org/questions/programming-9/simulating-a-mouse-click-594576/ (zweiter Beitrag)
DrGreenthumb schrieb:
boost::exception ist da evtl auch noch einen blick wert, ich weiß aber nicht wie weit das geht
Die haben bereits folgende Erweiterung für C++0x implementiert:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html
http://www.boost.org/doc/libs/1_42_0/libs/exception/doc/tutorial_exception_ptr.html
Damit kann man dann in dem Thread die Exception fangen und in einen anderen Thread kopieren und dort wieder werfen. Das dürfte ja genau das sein, was der Op sucht.
Da kommen die Bibliotheken nach /usr/lib oder /usr/local/lib.
Hier steht auch ein Wort zu den Namenskonventionen, an die man sich halten sollte:
http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
rüdiger schrieb:
CMake ist aber auch ziemlich schrecklich. Leider derzeit das einzig praktikable, wenn man auch Windows sinnvoll unterstützen will (da es VS-Projektfiles generieren kann und im Gegensatz zu autotools kein Cygwin oä braucht).
Ja, CMake ist wohl der einzig wirklich vollwertige Ersatz für die Autotools. Dass es da ein paar Ekelhaftigkeiten mit sich bringt, wundert mich nicht, bringt leider das Anwendungsgebiet so mit sich. So riesige Plattformunterschiede wegabstrahieren, wie das ein gutes Buildsystem tun muss, ist einfach ein dreckiger Job.
Aber das Autotools-Tutorial ist wirklich ziemlich fein, ich hatte irgendwann mal was ähnliches, was auch recht hilfreich war, finde ich aber gerade nicht mehr. Muss ich suchen, ein bisschen FAQ-Material zu dem Thema wäre sicher nicht dumm.
wie hast du es denn versucht zu starten?
Normalerweise solltest du nur 'make' in der Konsole tippen (wenn du im Projektverzeichnis bist, das Makefile muss hier enthalten sein).
Falls dich das ganze mehr interessieren sollte, hier gibts eine Einführung:
http://www.gnu.org/software/make/manual/make.html
Hallo,
danke für den Tipp! Ich musste zusätzlich noch
libtest.so.1
anlegen und
export LD_LIBRARY_PATH=./
, damit das funktionierte.
Warum ist das denn so? Kann ich beim Linken auch gleich angeben, welche Version ich möchte? Bei den ganzen Beispielen im Internet ist das nicht erwähnt (Zumindest bei denen, die ich las, z.B http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html).
Viele Grüße
Ist das ernst gemeint :)?
Nö, nur ANSI kennt sowas eben nicht. Und tatsächlich hättest du in der Unix-Ecke bessere Chancen.
Versuch's mal im ersten Beispiel so:
for (i = 0; i < 2; i++) {
if (fork() == 0) { //erstellen eines Kindprozesses, Erfolg bei 0
printf("V %d --> %d\n", getppid(), getpid());
} else printf("FATAL\n"); // <---
}
So kommst du sicher schnell dahinter. Ich tippe drauf, dass du dich damit verwirrt hast, dass fork() eine Kopie erzeugt.
bin gerade dabei mich ein bischen einzulesen, dabei ist mir aufgefallen, das sich die manpage auf linux.die.net ein bischen von der auf kernel.org unterscheidet kann mir das zwar nicht erklären, aber ein ist es mir wert
http://linux.die.net/man/7/capabilities
http://www.kernel.org/doc/man-pages/online/pages/man7/capabilities.7.html
lg lolo
Ach natürlich. ^^ Der Elternprozess wartet hier ja nicht. Oh man. ^^ Ok, danke.....was für ein blöder Fehler. Und ich wunder mich schon warum das kleine Prog hier nicht ging. ^^