
C语言
wllinux12138
这个作者很懒,什么都没留下…
展开
-
error: expected declaration specifiers or ‘...’ before numeric constant
今天遇到了这个错误,很奇怪,最终解决了。可以产生这个错误的示例代码如下:#include <stdio.h>#define VALUE 1int func(int a){ printf("%d\n",a); return 0;}int main(){ int func(VALUE); return 0;}编译:函数func调用的时候,多加了返回值类型,所以报了这个错误。...原创 2021-02-03 10:46:51 · 9712 阅读 · 2 评论 -
APUE笔记-进程间通信
进程间通信部分内容参考《Unix网络编程 卷2》管道只能在有公共祖先的进程中使用。实验: 1 #include <stdio.h> ...原创 2018-09-21 16:11:26 · 240 阅读 · 0 评论 -
getopt函数学习
getopt()用来分析命令行参数。头文件 #include<unistd.h>定义函数 int getopt(int argc,char * const argv[ ],const char * optstring);extern char *optarg;extern int optind, opterr, optopt;optind是下一次进行选项搜索的开始索引,下...原创 2018-09-19 20:24:04 · 168 阅读 · 0 评论 -
APUE笔记-守护进程
守护进程编程步骤:1、umask将屏蔽字改为已知值(通常为0)2、调用fork然后师父进程exit。(子进程继承父进程的组ID,子进程获得新的ID,并且不是组长。)3、setsid创建新的会话。(做了三件事:成为新会话首进程、成为新进程组的组长、没有控制终端。)忽略掉SIGHUP信号,这个信号和控制终端有关。再次fork并且使父进程exit,使守护进程不是会话首进程,防止取...原创 2018-09-13 22:40:38 · 257 阅读 · 0 评论 -
APUE笔记-进程环境
进程环境进程的内核空间映射到同一块物理地址。进程只能读写用户空间。用户空间映射到不同的物理地址,进程只能读写自己的用户空间。PCB在内核空间,操作系统按照页管理内存。每个页可以设置读写访问权限。参考MMU的设置代码。Linux只用了两个特权级别。(Intel的CPU 4个特权级) ISO C规定一个进程可以登记最多32个函数,这些函数由exit自动调用atexit(st...原创 2018-09-06 20:39:51 · 152 阅读 · 0 评论 -
APUE笔记-线程
线程线程ID pthread_t函数:比较线程ID是否相等:int pthread_equal(pthread_t tid1,pthread_t tid2);获取自己的线程ID:pthread_t pthread_self(void)例子:工作队列,主线程控制作业分配,其他线程从作业队列取出自己的作业。需要比较作业中设置的ID和自己的ID。创建线程:失败返回错误码,不像其他...原创 2018-09-04 19:32:51 · 197 阅读 · 0 评论 -
sigjmp longjmp 和 sigsetjmp siglongjmp比较
阅读《Unix环境高级编程》P283页 10.15处的体会。(错误之处,望大家批评指正)本文通过几个实验说明sigjmp longjmp 和 sigsetjmp siglongjmp的区别。实验一:执行信号X(任意信号)处理程序时,X信号会被自动加入到信号屏蔽字。信号处理程序执行完毕,信号屏蔽字会恢复原来的。 1 #include <stdio.h> ...原创 2018-09-01 11:13:11 · 557 阅读 · 0 评论 -
dup和dup2分析
1、dup:复制现有的文件描述符,返回当前文件描述符最小值int main(){ int fd; fd = open("123.c",O_CREAT | O_RDWR,0777);//打开123.c这个文件,文件描述符为3,fd=3 if(fd==-1) { perror("open"); } fd = dup(STDOUT_...原创 2018-07-01 10:16:45 · 397 阅读 · 0 评论