I am trying to read the output of a linux command using QProcess but its not given the correct output.

Qt Code:
  1. QProcess process;
  2.  
  3. process.start("iwconfig 2>&1 | grep ESSID");
  4. process.waitForFinished();
  5. usleep(1000);
  6. QString output(process.readAllStandardOutput());
  7. qDebug()<<output;
  8.  
  9. QString err(process.readAllStandardError());
  10. qDebug()<<err;
To copy to clipboard, switch view to plain text mode 


In this code the qDebug()<<output; prints "" and
qDebug()<<err; prints "iwconfig: unknown command "|"
"
When I run this same command "iwconfig 2>&1 | grep ESSID" in terminal window its shown
wlan0 IEEE 802.11bgn ESSID:"Arun Kumar" Nickname:"<WIFI@REALTEK>"

Why my program printing "iwconfig: unknown command "|"", what is the error in my code and how I can correct this in my code?