linux之进程线程
1.pid唯一描述一个进程
getpid()函数返回进程ID号,getppid返回其父进程的id号
返回类型为pid_t型--通过typedef定义为unsigned int
2.fork()函数:以父进程为蓝本复制一个进程,执行一次返回两次。
头文件:#include<unistd.h>,#include<sys/types.h>
返回-1创建失败
返回0在子进程中执行。
返回进程ID号在父进程中执行
3.system()函数:阻塞当前进程去执行特定的命令,直到执行完毕。
#Include<stdlib.h>
int system(const char *command);
返回值: 失败返回-1,sh不能执行,返回127.成功返回进程状态值
4.exec()函数系列:代替原来的进程,pid号也相同
5.用户态初始进程init()
查看进程关系树命令:pstree
5.管道
#include<unistd.h>
int pipe(int filedes[2]); //参数为文件描述符的数组,保存管道返回的两个文件描述符
即fd1(写操作二创建和打开)的输出变成了fd0(读操作)输入
执行成功返回0;失败返回-1
父子进程通信:
write函数定义如下:
#include <unistd>
ssize_t write(int filedes, void *buf, size_t nbytes);
// 返回:若成功则返回写入的字节数,若出错则返回-1
// filedes:文件描述符
// buf:待写入数据缓存区
// nbytes:要写入的字节数
read函数定义:
#include <unistd> ssize_t read(int filedes, void *buf, size_t nbytes); // 返回:若成功则返回读到的字节数,若已到文件末尾则返回0,若出错则返回-1 // filedes:文件描述符 // buf:读取数据缓存区 // nbytes:要读取的字节数
6.linux创建管道
mkfifo lsy
用ls -al 查看管道文件属性为p
7.linux下的线程