![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LINUX / UNIX
文章平均质量分 90
铲灰
平凡的一个人
展开
-
Linux程序的内存
Linux程序的内存原创 2023-04-16 14:40:19 · 417 阅读 · 0 评论 -
C语言读写锁
#include <stdio.h>#include <pthread.h>int counter;pthread_rwlock_t rwlock;//3个线程不定时写同一全局资源,5个线程不定时读同一全局资源void *th_write(void *arg){ int t; while (1) { ///互斥量 ...原创 2020-03-16 18:47:31 · 2899 阅读 · 0 评论 -
wait/waitpid函数详解
#include<sys/types.h>#include<sys/wait.h>pid_t wait(int *status);pid_t waitpid(pid_t pid, int *status, int options);特殊参数和返回情况:参数pid: >0 回收指定ID的子进程 -1 回收任意子进程(相当于wait...原创 2020-02-26 11:06:17 · 1366 阅读 · 0 评论 -
僵尸进程
僵尸进程: 子进程退出,父进程没有回收子进程资源(PCB),则子进程变成僵尸进程孤儿进程: 父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为1号进程init进程,称为init进程领养孤儿进程一个进程在终止时会关闭所有文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存了一些信息:如果是正常终止则保存着退出状态,如果是异常终止则保存着导致该进程终止的信...原创 2020-02-26 10:48:50 · 180 阅读 · 0 评论 -
fork函数
#include <unistd.h>#include <sys/types.h>#include <stdio.h>#include <stdlib.h>/*pid_t fork(void);子进程复制父进程的0到3g空间和父进程内核的PCB,但id不同fork调用一次返回两次父进程中返回子进程ID子进程中返回0读时共享,写...原创 2020-02-26 10:27:00 · 94 阅读 · 0 评论 -
用fcntl改变File Status Flag
#include <unistd.h>#include <fcntl.h>#include <errno.h>#include <string.h>#include <stdlib.h>#define MSG_TRY "try again\n"int main(){ char buf[10] = {0}; ...原创 2020-02-26 10:06:55 · 155 阅读 · 0 评论 -
error出错处理
当UNIX系统函数出错时,通常会返回一个负值,而且整型变量errno通常被设置为具有特定信息的值。在支持多线程的环境中,多个线程共享进程地址空间,每个线程都有属于它自己的局部error以避免一个线程干扰另一个线程。对于errno应当注意两条规则。第一条规则是:如果没有出错,其值不会被例程清除。因此,仅当函数的返回值指明出错时,才检验其值。第二条规则是:任何函数都不会将error的值设置为0,而...原创 2019-05-23 22:53:34 · 371 阅读 · 0 评论 -
遇到的问题
1.一直申请内存,没有释放内存,导致设备内存不够用,程序挂掉了。2.踩内存,导致程序挂掉了。代码:#include <stdio.h>#include <string.h>int main(){ int a = 1, b = 2, c = 3; memset(&b, 0, 8);//本来是只清零b变量,实际上清零了8个字节...原创 2019-04-18 16:15:34 · 106 阅读 · 0 评论 -
线程简单操作
#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <unistd.h>#include <string.h>void *f(void *arg){ int n = 3; while (n--) { printf(...原创 2018-07-30 16:15:53 · 139 阅读 · 0 评论 -
线程简单操作
#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <unistd.h>void *f1(void *arg){ printf("hello 111111\n"); return (void*)1;}void *f2(void *arg...原创 2018-07-30 15:43:11 · 138 阅读 · 0 评论