进程标识
#include <unistd.h>
pid_t getpid(void);
pid_t getppid(void); // 父ID
uid_t getuid(void); // 实际用户ID
uid_t geteuid(void); // 有效用户ID
gid_t getgid(void); // 实际组ID
gid_t getegid(void); // 有效组ID
fork 创建新进程
#include <unistd.h>
pid_t fork(void); // 子进程返回0,父进程返回子进程ID,出错返回-1
父进程和子进程是两个堆栈空间,子进程改变不了父进程堆栈空间里的数据。有一项需要注意,IO缓冲区如果有数据,子进程也会复制过去
#include <unistd.h>
#include <stdio.h>
int main()
{
setvbuf(stdout, nullptr, _IOFBF, 0); // 设置标准输出为全缓冲
printf("abc\n"); // 数据在缓冲区不立即输出
fork(); // 创建子进程,子进程输出缓冲区也有数据
return 0;
}
/*
结果会打印两次abc
*/
父子进程共享在fork之前的文件描述符,并且会相互影响文件偏移量。本质是共享一个打开文件表项。
标签:fork,控制,void,pid,第八章,进程,include,ID From: https://www.cnblogs.com/hellozhangjz/p/17670888.html