1.读取文件流程:
1.打开文件
2.读/写文件
3.关闭文件
2.阻塞和非阻塞是文件的一种属性,只有设备文件和网络文件才有的特性
3.fcntl(fd1,F_DUPFD,0)//0被占用,fcntl使用文件描述符表中可用的最小文件描述符
4.fcntl(fd1,F_DUPFD,7)//7被占用,fcntl使用文件描述符表中可用的最小文件描述符,如果7被占用,就找一个最小的文件描述符
5.管道需要有血缘关系的进程之间通信
共享映射区(无血缘关系的进程之间通信)
进程间通信:
1.管道(使用最简单,有血缘关系进程间)
2.信号(开销最小,有血缘关系进程间)
3.共享映射区(无血缘关系进程间)
4.本地套接字(最稳定,实现复杂度最高)
6.占用磁盘空间:目录,文件,连接文件
不占用磁盘空间:管道,套接字,字符设备,块设备
7.
#include <stdio.h> #include <unistd.h> #include <sys/time.h> #include <signal.h> void myfunc(int signo){ //printf("hello world\n"); printf("hello world"); printf("\n"); fflush(stdout); } int main(void){ // int i; // alarm(10); // for(i = 0; ; i++){ // printf("%d\n",i); // //#usleep(10*1000); // } struct itimerval it,oldit; signal(SIGALRM,myfunc); it.it_value.tv_sec=2; it.it_value.tv_usec=0; it.it_interval.tv_sec=5; it.it_interval.tv_usec=0; if(setitimer(ITIMER_REAL,&it,&oldit)==-1){ perror("setitimer err"); return -1; }
8. 只要子进程状态发生变化,就会发生SIGCHLD信号
标签:fcntl,文件,tv,编程,描述符,linux,printf,include From: https://www.cnblogs.com/miwaiwai/p/17600563.html