hallo,
ich bin nicht sicher, ob ich das richtig verstehe, denn ich kenne auch keinen X Server.
ist das so in der Art zu verstehen...?
FILE * fp;
fp << system("zenity --file-selection");
![]()
hallo,
ich bin nicht sicher, ob ich das richtig verstehe, denn ich kenne auch keinen X Server.
ist das so in der Art zu verstehen...?
FILE * fp;
fp << system("zenity --file-selection");
![]()
Hallo,
X-Server ist der 'Fensterverwalterer'. Normal startest Du die GUI mit startX.
Eine Pipe mache ich normal mit popen auf.
Hier ein ungetestetes Beispiel aus dem Kopf
Damit würde ich mal probieren eine gewünschte Funktion zu bauen.Code:FILE *f; if(!(f = popen("zenity --file-selection", "r"))){ strcpy(Dateiname,"Falsch"); exit(1); } char Text[1024]=""; fgets(Text, sizeof(Text), f); fclose(f); if(strlen(Text)<2){ //Kein Dateiname übergeben / Abbrechen geklickt, etc strcpy(Dateiname,"Falsch"); }else{ //Dateiname sollte in Text stehen. strcpy(Dateiname,Text); }
Geändert von peterfido (17.06.2016 um 13:49 Uhr)
Wenn das Herz involviert ist, steht die Logik außen vor! \/
danke, das sieht ja sehr bekannt aus:
f = popen("zenity --file-selection", "r");
... genau gleich wie fopen!
f = fopen("/path/filename", "r");
schön, wenn man auf was bekanntes trifft
Bevor ich jetzt 3 Stunden brauche , um zenity zu installieren, und dann klappts doch nicht ....
Könnte das vlt einmal jemand vor-testen, der bereits zenity bei sich auf dem Pi installiert hat?
Hallo,
bei meinen Raspis ist das drauf. Evtl. ist es standard.?. Einfach mal den Befehl aufrufen und schauen, was passiert.
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Zenity scheint auf Debian Betriebssystemen Standard zu sein.
Hab ein bischen mit Peterfido's Code gespielt:Code:#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { FILE *f; char Dateiname[1024] = ""; int c; /* Zenity für File-Dialog benutzen */ freopen("/dev/null", "w", stderr); // Warnungen von zenity ignorieren if(!(f = popen("zenity --file-selection", "r"))){ strcpy(Dateiname, "Falsch"); exit(1); } freopen("/dev/tty", "w", stderr); fgets(Dateiname, sizeof(Dateiname), f); fclose(f); if(strlen(Dateiname) < 2){ //Kein Dateiname übergeben / Abbrechen geklickt, etc strcpy(Dateiname, "Falsch"); } /* Inhalt der Datei ausgeben */ printf("Dateiname: %s", Dateiname); Dateiname[strlen(Dateiname)-1] = '\0'; // '\n'-Stringende entfernen f = fopen(Dateiname, "r"); if (f) { while ((c = getc(f)) != EOF) putchar(c); fclose(f); } }
Geändert von Sisor (17.06.2016 um 20:18 Uhr)
bei der letzten GT Deinstallation scheint er mir das g++ gelöscht zu haben: ich kann nicht mehr mit g++ compilieren ("g++ not found")
was ein Sch**ss.
Jetzt muss ich erst mal schauen, wo ich ein altes Pi Image neu auf SD laden kann
Linux: ich könnte ko**en.![]()
Hallo,
zum programmieren / rumtesten nutze ich einen extra Pi. Dieser hat alles Mögliche drauf und deinstalliert wird da normal nix. Wenn die Programme dann auf einem anderen Pi laufen sollen und irgendwas fehlt, installiere ich es da nach.
Wenn nur g++ fehlt, dann kannst Du das auch einzeln nachinstallieren.
Als Backup habe ich ein BASH-Script, welches auf dem NAS immer den kompletten Inhalt der SD-Karte ablegt. Das Script ist auf allen Raspis vorhanden und wird vor / nach größeren Änderungen ausgeführt.
Wichtig ist, dass die Konsole / SSH Session nicht geschlossen wird, während das Script läuft. Zurückspielen geht per Windows Tool win32diskimager-binary06.Code:#!/bin/bash # # DS mounten # MountPoint=/tmp/ds RaspiName=RaspiBPlus_ RaspiName=$RaspiName$(date +%Y%m%d-%k%M%S) echo $RaspiName service rpcbind start if [ ! -e $MountPoint ]; then mkdir $MountPoint fi mount -t nfs 192.168.2.15:/volume1/Raspberry $MountPoint dd if=/dev/mmcblk0 of=$MountPoint/$RaspiName.img bs=1M umount $MountPoint service rpcbind stop
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Lesezeichen