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
posted @ 2021-05-10 23:02  博客员_小李  阅读(52)  评论(0)    收藏  举报