Gute Abend zusammen,
ich werte zurzeit Änderungen am GPIO Pin aus. Dazu verwende ich die wiringpi Bibliothek.
Sobald der GPIO von 1 auf 0 wechselt, möchte ich ein shell script ausführen. Dies funktioniert auch über die system() Funktion.
Das Problem an der ganzen Sache ist nun, mein Hauptprogramm muss ich da ich wiringpi verwende als sudo ausführen. Mein shell script hingegen sollte als normaler user ausgeführt werden. Tritt nun das Ereigniss ein, wird mein shell script auch ausgeführt, allerdings also sudo.
Gibt es hier eine Möglichkeit das zu unterbinden?
Script ausführen
-
marcel -
15. August 2015 um 19:13 -
Erledigt
Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
-
-
Script ausführen? Schau mal ob du hier fündig wirst!
-
-
-
-
Ja habe es beim 3. mal lesen auch verstanden;)
funktioniert nicht. habe es noch anders versucht.
|USER| entsprechend dem Benutzer bei mir pi abändern. So scheint das ganze zu Funktionieren. Ich Danke dir für die Hilfe.
Habe nun aber noch eine andere Frage, was muss ich machen, damit mein C Script mein Raspberry nicht so auslastet?
-
Hi,
hm ... hatte das nur mal auf die Schnelle unter Ubuntu ausprobiert ... da klappt es
in yy.sh steht nuraber egal ... wenn's jetzt funktioniert.
Habe nun aber noch eine andere Frage, was muss ich machen, damit mein C Script
Es gibt keine C-scripts
C ist kein Interpreter wie bash, python, php, ... sondern eine Hochsprache, die mittels Compiler in Binärcode umgewandelt wird.
... mein Raspberry nicht so auslastet?
dazu müsste man jetzt eine Kristallkugel befragen, die Deinen Sourcecode anzeigt ...
Kristallkugeln sind aber sehr teuer, und da ihr hier nichts bezahlt, müssen wir auf Glaskugeln zurückgreifen. Die zeigen aber keinen Sourcecode an
cu,
-ds- -
Hallo Marcel,
Habe nun aber noch eine andere Frage, was muss ich machen, damit mein C Script mein Raspberry nicht so auslastet?Ich lege meine Programme, wenn sie zuviel zur Prozessorauslastung beitragen, schlafen.
Meist reicht ein
um das Programm für 20 ms zum Schlafen zu bringen.
Die Zeile ist am besten in der Hauptschleife / Hauptereignisschleife angebracht.Aber da wir Deinen Quellcode nicht kennen, ist alles Weitere pure Spekulation.
dreamshader:
C ist nur deshalb keine Interpretersprache, weil noch keiner einen C-Interpreter geschrieben hat.Da fällt mir etwas dazu ein:
Ich hatte mal einen Assembler/Disassembler für den 6502-Prozessor geschrieben.. ähem ... in der Programmiersprache BASIC. Als das Programm dann lief, habe ich noch etwas draufgesetzt, was man als Einzelschrittbearbeitung oder auch als Interpreter für Maschinencode bezeichnen kann. Wann immer auf Code gestoßen wurde, der zum Absturz führen würde, hat das Programm die Abarbeitung abgebrochen statt das gesamte System ins Nirwana zu schicken. Das hat tatsächlich funktioniert, die Abarbeitung des interpretierten Maschinencodes war aber um den Faktor 1000 langsamer als eine BASIC-Version davon. Aber zum Fehlerfinden was das genial!Beste Grüße
Andreas
-
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]> C ist nur deshalb keine Interpretersprache, weil noch keiner einen C-Interpreter geschrieben hat.[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Diese Behauptung ist falsch.[/font][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Es gab sogar mal einen kommerziellen Interpreter, ich glaube er hiess "C-Terp".[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Es gab auch ein paar andere Interpreter, haeufig fuer den internen Gebrauch[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]und deshalb wenig bekannt.[/font][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Und einer ist abgedruckt in "Born to Code in C" von Herbert Schildt (1989)[/font]
-
Autsch ... Tell ist mit Windows(?) unterwegs ??
\[color=#333333\] \[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif\"]>
C ist nur deshalb keine Interpretersprache, weil noch keiner einen C-Interpreter geschrieben hat.[/font][/color]
diese C-Interpreter ( nicht zu verwechseln mit Interpreten ) kenne ich auch noch ...
Das ist aber wohl OT hier
(Ein Fachbuch aus 1989 ... wie geil ist das denn ).cu,
-ds- -
> Autsch ... Tell ist mit Windows(?) unterwegs ??
Ich muss ...Hier im Forum aber meist mit Knoppix
> (Ein Fachbuch aus 1989 ... wie geil ist das denn ).
Ich hab auch noch ein Exemplar von "Implementing Software for Non-Numeric Applications" von 1973.Aber jetzt zurueck zum Thema des Threads !
-
Ah super delay hat geholfen meine CPU last ist nun nicht mehr bei 100%.
-
Ich wollte auch per C++-Programm Shellbefehle als anderer Benutzer (nicht root) absetzen. Verwendet wird Raspbian 7.1.
Die hier aufgeführten Übergabeparameter der Funktion system() führten nicht zum gewünschten Ergebnis. Scheinbar lag es an Feinheiten.
Nach etwas rumprobieren kam folgende Syntax heraus:Befehl entspricht dem, was man ausführen möchte.
Benutzer sollte klar seinBeispiel: Im aktuellen Verzeichnis legt der Benutzer "pi" einen neuen Ordner namens "test" an.
Nun stellt sich mir noch die Frage, ob und wenn ja, wie man Variablen übergeben kann.
Ein minimalistisches Beispiel:
Man erstellt eine Variable, lässt den Benutzer einen Zahlenwert in die Variable schreiben und erstellt dann einen Ordner, dessen Namen dem Variablenwert entspricht. Mit dem angegebenen Quellcode wird (na klar) ein Ordner namens "ordnernummer" erstellt.
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!