【C/C++】Linux下使用system()函式一定要謹慎
文章來源: http://my.oschina.net/renhc/blog/53580
曾經的曾經,被system()函式折磨過,之所以這樣,是因為對system()函數了解不夠深入。只是簡單的知道用這個函式執行一個系統命令,這遠遠不夠,它的返回值、它所執行命令的返回值以及命令執行失敗原因如何定位,這才是重點。當初因為這個函式風險較多,故拋棄不用,改用其他的方法。這裡先不說我用了什麼方法,這裡必須要搞懂system()函式,因為還是有很多人用了system()函式,有時你不得不面對它。 先來看一下system()函式的簡單介紹: ?1 2 |
#include
<stdlib.h>
int
system ( const
char
*command);
|
system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed. During execution of the command, SIGCHLD will be blocked, and SIGINT and SIGQUIT will be ignored.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
int
system ( const
char
* cmdstring)
{
pid_t
pid;
int
status;
if (cmdstring
== NULL)
{
return
(1); //如果cmdstring為空,返回非零值,一般為1
}
if ((pid
= fork())<0)
{
status
= -1; //fork失敗,返回-1
}
|