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);

本文详细介绍了在Unix和类Unix系统中如何使用exec函数族替换当前进程映像为指定的新进程,包括不同exec函数的区别及应用场景,并解释了如何通过fork创建新进程及与exec的区别。
6348

被折叠的 条评论
为什么被折叠?



