容易遗忘滴东东:
进程:
1. exec系列:
1.通过给顶绝对路径去找哦
2.在系统的环境变量中找(给个名字即可)
3.在我们提供的环境变量数组中找(最后一个为0)
2.#include <sys/types> <unistd.h> fork() 返回0 ,表示是子进程哦。
pid_t 类型,整型的啦,用于接收fork的返回值的。
3.#include <sys/wait.h>
pid_t wait(int *jilu) 用于父进程等待子进程。 返回值子进程id,然后把状态写入到jilu变量中,我们可以通过宏来知道情况(意外终止,成功返回执行,等)(返回0表示成功。)
注意:等待不是说我一次你一次的等待,而是一开始我不管你,也不等你,知道遇见这个wait()函数开始,我才开始等你结束。
4. pid_t waitpid( pid_t pid,int *jilu ,int options);
信号:#include <signal.h>
sigint sigquit sigalrm sigkill .......sig_ign sig_def 忽略,默认处理。
注册:signal(sigint,abc);
实现:void abc(int sig){xxx}
5.kill(pid,sigint)发送信号
pause(); 把一个进程挂起,直到有一个信号过来。
使用信号并使进程挂起是linux程序设计中的一个重要部分。
6.一个健壮的信号接口: int sigaction( ing sig, const struct sigaction *act, struct sigaction *oact);
oact:把原来对该信号的动作写到它指向的位置。 act:指定信号处理动作哦。
struct sigaction act;
act.sa_handler=abc;
sigemptyset(&act.sa_mask);//信号屏蔽集,设置为空
act.sa_flags=0; //如果这是RESETHAND,则表示第二次signal调用时,重置其默认动作。
sigaction(SIGINT, &act , 0);
7.信号集:sigset_t
有相应的添加信号,删除信号,判断是否存在一个信号的一些函数的操作哦。
信号屏蔽字是指当前被阻塞的一组信号,他们不能被当前进程接收到。