Added Process.runShellCommand*() methods.

This commit is contained in:
Cristian Maglie 2013-06-12 13:28:24 +02:00
parent 8674a1b9e9
commit 406c20222a
3 changed files with 43 additions and 0 deletions

View File

@ -118,6 +118,20 @@ void Process::close() {
started = false;
}
unsigned int Process::runShellCommand(const String &command) {
runShellCommandAsynchronously(command);
while (running())
delay(100);
return exitValue();
}
void Process::runShellCommandAsynchronously(const String &command) {
begin("/bin/ash");
addParameter("-c");
addParameter(command);
runAsynchronously();
}
// This method is currently unused
//static unsigned int __commandOutputAvailable(uint8_t handle) {
// uint8_t cmd[] = {'o', handle};

View File

@ -36,6 +36,9 @@ public:
unsigned int exitValue();
void close();
unsigned int runShellCommand(const String &command);
void runShellCommandAsynchronously(const String &command);
operator bool () { return started; }
// Stream methods

View File

@ -0,0 +1,26 @@
/* Demonstrate shell commands */
#include <Process.h>
void setup() {
Bridge.begin();
Console.begin();
Console.buffer(64);
}
void loop() {
Process p;
// This command line prints the number of bytes received and transmitted from WLAN
p.runShellCommand(F("ifconfig wlan0 | grep \"RX bytes\" | tr ':' ' ' | awk \"{ print \\$3 \\\" \\\" \\$8 }\"\n"));
// Read command output
while (p.available()) {
char c = p.read();
Console.print(c);
}
Console.flush();
delay(5000);
}