3. 进程
每一个进程都有一个非负整数的进程ID,我们可以通过getpid函数(<unistd.h>头文件中)打印当前进程的进程ID
printf("pid: %ld", (long)getpid());
与进程相关的函数有:
fork函数用于创建一个和父进程(当前进程)一模一样的进程,fork函数在父进程中返回值为子进程的进程ID,在子进程中返回值为0,如:
int32_t pid = fork(); // 在父进程中pid为一个正整数,在子进程中pid为0
int execlp(const char * file,const char * arg,....);
函数说明:
execlp()会从PATH 环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个以后的参数当做该文件的argv[0]、argv[1]……,最后一个参数必须用空指针(NULL)作结束。如果用常数0来表示一个空指针,则必须将它强制转换为一个字符指针,否则它将解释为整形参数,如果一个整形数的长度与char * 的长度不同,那么exec函数的实际参数就将出错。如果函数调用成功,进程自己的执行代码就会变成加载程序的代码,execlp()后边的代码也就不会执行了.
返回值:
如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno 中。
pid_t waitpid(pid_t pid,int *status,int options)
函数说明:等待指定子进程ID的进程退出,返回status参数是监听的进程的返回值,options可以填0

浙公网安备 33010602011771号