http://blog.csdn.net/u011078940/article/details/51200606
大家都知道php執行系統命令的方法有:
system() 輸出並返回最后一行shell結果。
exec() 不輸出結果,返回最后一行shell結果,所有結果可以保存到一個返回的數組里面。
passthru() 只調用命令,把命令的運行結果原樣地直接輸出到標准輸出設備上。
這些方法都會等待命令執行完畢后才會繼續執行后續的程序
不阻塞可以將命令輸出的內容寫入系統的一個回收站文件,這樣程序就不會阻塞
例如:
shell_exec("/use/local/php/bin/php /www/t.php > /dev/null 2>&1 &");
shell中可能經常能看到:>/dev/null 2>&1
命令的結果可以通過%>的形式來定義輸出
/dev/null 代表空設備文件
代表重定向到哪里,例如:echo “123” > /home/123.txt
1 表示stdout標准輸出,系統默認值是1,所以”>/dev/null”等同於”1>/dev/null”
2 表示stderr標准錯誤
& 表示等同於的意思,2>&1,表示2的輸出重定向等同於1
那么本文標題的語句:
1>/dev/null 首先表示標准輸出重定向到空設備文件,也就是不輸出任何信息到終端,說白了就是不顯示任何信息。
2>&1 接着,標准錯誤輸出重定向等同於 標准輸出,因為之前標准輸出已經重定向到了空設備文件,所以標准錯誤輸出也重定向到空設備文件。