进程和线程

1.  getenv()获取环境变量

2.  gedit 1.c 手工置于前台   fg 后台->前台

3.  getcwd :获取当前目录  printenv:打印环境变量

4.  getpwuid(getuid())->pw_name

5.  cd:shell内键命令,不牺牲子进程。

6、  exit 和 wait 配合使用

  1)void exit(int status); status 返回给父进程,可以被wait接受。并且会强制缓冲存储。status等于0时表示正常。

  2)pid_t wait(int status);

  3)pid_t waitpid(pid_t pid, int * status, int options)  此函数和pid_t fork(void) 都可以接受子进程。

7.  日志文件所在:/var/log/syslog

8.  线程编译时要加 -lpthread

9.  pthread_self()线程号

10.  memset, bzero 可以将内存清零。

11.  条件变量(线程间通信,解决空转,信号量由条件变量封装而成)

  1)pthread_cond_wait()  睡了解锁,醒来加锁。

  2)pthread_cond_broadcast()唤醒所有

  3)pthread_cond_signal 唤醒第一个

12  守护进程创建步骤

  1)创建子进程,父进程退出。

    pid = fork();

    if(pid < 0)

    {

      perror("fork error");

      eixt(1);

    }

    else if(pid > 0)

     exit(0);

  2)在子进程中创建新会话。(前两步骤必须有)

    setpid();(返回进程组ID)

  3)改变当前目录

    chdir("/tmp");

  4)重新设置文件权限掩码

    umask(0);

  5)关闭文件描述符

    for(i = 0; i < getdtablesize(); i++)  close(i);

13  map 映射4函数(可重入问题)pthread_once  pthread_key_create  pthread_setspecific  pthread_getspecific

14  线程池中,队列是带缓冲的临界资源。

15  kill 2 = crtl c  kill -17 (用wait 收尸,接收子进程信号)  kill -18 continue  kill -19 stop  (kill -9 和kill -19 不能被忽略。)

16  EEXIST(17) File exists

17  sprintf 字符串拼凑。

18  无名管道中: fd[0]是负责读, fd[1]是负责写。

19  close其实是把文件使用记数减去一。

20  ipcs指令用于查看system V 家族的进程间通信   -m只是查看共享内存。

21  p->消费者 post  v->生产者 wait

原文地址:https://www.cnblogs.com/oyjngz101/p/6020929.html