1.linux进程相关函数
(1)获取当前进程号
pid_t getpid(void)
头文件:sys/types.h、unistd.h
该函数成功返回当前ID,该函数always successful
(2)获取父进程号
pid_t getppid(void)
头文件:sys/types.h、unistd.h
always successful
(3)进程创建
(3-1) pid_t fork(void)
头文件:sys/types.h、unistd.h
功能:在当前进程中创建一个进程,与父进程共享代码段,复制父进程的堆栈段和数据段,子进程复制父进程,然后执行fork()后的代码。向父进程返回创建进程的进程号,在子进程中返回0。
返回值:fork返回给父进程所创建进程的进程号,然后返回创建成功标志值为0,失败-1或者errno
(3-2)pid_t fork(void)
头文件:sys/types.h、unistd.h
功能:和fork(父子进程的执行次序不确定)类似,但vfork保证了子进程先执行,子进程退出后父进程才执行,而且在创建时不像fork分配一片新的进程空间,而是在父进程的空间里执行。
(4)进程的退出
void exit(int value) //value为0代表正常退出,非0(一般1或-1)表示非正常退出,一般会有对应情况
父进程:exit(0)和return(0)
子进程:exit(0)
return和exit的区别是exit停止进程并且value表示进程退出状态,return是函数返回的标志可以返回多种数据类型
exit()(库函数;sdtlib.h)和_exit(系统调用;unistd.h):终止进程以后,_exit()缓冲区不被保存,exit()缓冲区被保存
exit函数作用:进程停止运行之前,检查文件打开情况,把文件缓冲区内容写回文件。,清除其使用的内存空间,并清除其在内核中的各种数据结构。
【知识科普】:(1)缓冲I/O,对应每一个打开的文件,在内存中都有一片缓冲区,每次读文件,连续读出若干条记录,这样在下次读文件时就可以直接从内存缓冲区读取;每次写文件写入