Starting New Process
int system(const char * string);
等同于sh -c string
用exec函数族Replacing a Process Image
exec函数族replaces the current process with a new process specified by the path or file arugment.Hand off execution of your program to another
#include <unistd.h>
char ** environ;
int execl(const char *path,const char * arg0,...,(char *)0);
int execlp(const char *file,const char * arg0,...,(char *)0);
int execle(const char * path,const char * arg0,...,(char *)0,char *const envp[]);
int execv(const char *path,char *const argv[]);
int execvp(const char * file,char * const argv[]);
int execve(const char * path,char * const argv[],char * const envp[]); 系统调用
用exec函数族来执行 ps -ax命令 调用如下
另外exec函数执行的时候inherits many features from the original. In particular,open file descriptors remain open in the new process unless their "close on exec flag" has been set. Any open directory streams in the original process are closed
exec 函数是replace a process image
而fork 则是duplicate a process image
#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);
#include <sys/wait.h>
pid_t wait(int * stat_loc);
pid_t waitpid(pid_t pid,int *stat_loc,int options);
#include <signal.h>
void (*signal(int sig,void (*fun)(int)))(int);
int kill(pid_t pid,int sig);
unsigned int alarm(unsigned int seconds);
int pause(void);