1. 程式人生 > >linux 建立程序

linux 建立程序

 

linux中建立程序的方法有fork和exec;
其中fork時,通過複製呼叫程序來建立新的程序;
exec則是用一個新的程式覆蓋原程序的記憶體空間,來實現程序的轉變,
如果系統呼叫了exec,並且成功,就不會有任何資料返回,如果失敗,
則會返回資料,可以通過檢查errno來獲取錯誤碼,或strerror或perror的方式
列印錯誤資訊;

fork:
如果返回值為0,則表示進入子程序,>0 則父程序,<0則失敗;
如果需要子父程序間同步,可以呼叫wait函式處理,該函式的作用是使一個程序等待,
直到其它程序結束;

如:

pid_t pid = fork();
if(!pid)
{
 std::cout<<"I am Child Process!"<<std::endl;
 /* do something */
}
else if (pid > 0)
{
 wait(NULL);
 /* do something */
}
else
{
 perror("Fork Error!");
 exit(1);
}


exec:
execl,execv
execvl,execvp

如果操作shell 命令:ls -l
execl("/bin/sh","ls","-l",NULL);

char * data[] = {"ls","-l",NULL};
execv("/bin/sh",data);
其中NULL定義為 (char *)0;表示串結束。