C
文章平均质量分 81
森林公园
这个作者很懒,什么都没留下…
展开
-
Linux 套接字:简介(一)(?)
目录原创 2019-04-13 23:09:48 · 1259 阅读 · 0 评论 -
Linux 进程信号屏蔽字 - 设置进程信号屏蔽字
在使用 sigaction 函数处理信号时,可以一并设置进程的信号屏蔽字。但是有单独的函数可以用来设置进程的信号屏蔽字:sigprocmask 函数。sigprocmask 函数#include <signal.h>int sigprocmask(int how, const sigset_t *set, sigset_t *oset);参数 how 的取值如下:...原创 2019-04-09 16:21:20 · 859 阅读 · 0 评论 -
问题:Linux 信号处理,当连续给一个进程同时发送多个信号时,部分信号丢失而未得到处理
参考链接 - linux 信号signal和sigaction理解(该文章解释了:< 实验 1 中连续多个相同信号处理问题 >,以及 < 实验 2/3 中使用 sigaction 信号屏蔽字解决信号处理函数竞态问题 > )连续给一个进程发送多个相同信号时,部分信号丢失而未得到处理(使用 signal 函数处理信号),代码如下:/* test2.c */#inclu...原创 2019-04-09 15:35:34 · 3000 阅读 · 2 评论 -
Linux 信号(signal)
信号是 UNIX 和 Linux 系统响应某些条件而产生的一个事件。接收到该信号的进程会相应的采取一些行动。我们用术语 生成 表示一个信号的产生,使用术语 捕获 表示接收到一个信号。信号是由于某些错误条件而生成的,如 内存段冲突 / 浮点处理器错误 或 非法指令等。它们由 shell 和终端处理器生成来引起中断,它们还可以作为在 进程间传递消息 或 修改行为 的一种方式,明确地由一个进程发送给...原创 2019-04-09 15:37:52 · 357 阅读 · 0 评论 -
GCC 中的 aligned 和 packed 属性(关于地址对齐)
原文链接 - GCC 中的 aligned 和 packed 属性(关于地址对齐)x.转载 2019-04-12 10:51:45 · 2577 阅读 · 0 评论 -
问题:同一个进程中,先后对同一个文件描述符进行写入 / 读取 操作,读写指针的位置导致读取内容失败
文件‘读写指针’ / lseek 系统调用在进行文件操作(读 / 写)时,可以使用 lseek 系统调用来设置文件的下一个读写位置。当 多进程 / 多线程 环境中,对同一资源进行读 / 写操作时,很可能会 因为 ‘读写指针’ 的变化导致各种隐蔽的问题,这一点必须要仔细。lseek 系统调用(对文件描述符的读写指针进行设置,即可以用它来 设置文件的下一个读写位置)#include <...原创 2019-04-08 18:03:58 · 1069 阅读 · 1 评论 -
Linux 内存管理
竟然可以手动分配内存!想想还有点小激动。目录内存操作函数(malloc / calloc / realloc / memcpy 等)demo(malloc 函数,简单内存分配)malloc 函数可以保证其返回的内存是地址对齐的(关于地址对齐),所以它可以被转换为任何类型的指针。demo(将结构体指针指向一块 ’精心安排的‘ 内存区域,并打印该结构体成员变量)#inclu...原创 2019-04-12 10:34:41 · 126 阅读 · 0 评论 -
Linux 编程,C 语言中的陷阱 - sizeof(字符串字面量)
目录sizeof 运算符 / C 语言字符串字面量(计算字符串字面量长度时,会计入字符串结尾的空字符 ‘\0’)1. sizeof 运算符C 语言中的 字符串字面量作为字符数组来处理当 C 语言编译器在程序中遇到长度为 n 的字符串字面量时,会为字符串字面量分配长度为 n + 1 的内存空间。这块内存空间将用来存储字符串字面量中的字符,以及一个用来标志字符串末尾的额外字符(空字符,...原创 2019-04-08 10:52:31 · 563 阅读 · 0 评论 -
问题:C 语言结构体类型参数 与 结构体指针类型参数 的区别
结构体类型 参数传递的是结构中所有成员的副本。而 结构体指针类型 参数传递的是指向原结构体的指针。代码/* test3.c */#include <stdio.h>struct data { int i; char *msg;};void changeData1(struct data d); // 结构体类型参数void changeD...原创 2019-04-11 15:33:53 · 543 阅读 · 0 评论 -
Linux 编程中的错误处理
1. 头文件 <errno.h>( !errno 变量存在线程安全问题 !)标准库中的一些函数通过向 <errno.h> 中声明的 int 类型 errno 变量存储一个错误码(正整数)来表示有错误发生。假设我们需要使用一个库函数,该库函数通过给 errno 赋值来产生程序运行出错的信号。在调用这个函数之后,我们可以检查 errno 的值是否为零。如果不为零,则表示在...原创 2019-04-08 21:56:02 · 174 阅读 · 0 评论 -
Linux 错误码(error code)列表(头文件 ‘errno.h’)
参考链接 - What are the standard error codes in Linux?目录Ubuntu 中安装 ‘errno’ 命令使用 ‘errno -ls’ 命令,查看错误码错误码(error code)列表错误码列表生成程序1. Ubuntu 中安装 ‘errno’ 命令:ubuntu@cuname:~$ sudo apt-get install mor...原创 2019-04-08 15:56:00 · 4129 阅读 · 0 评论 -
2.2.1 进程管理,以及父子进程共享同一个文件资源时,文件的‘读写位置’会相互影响
目录等待一个进程(父进程等待子进程终止)僵尸进程(defunct / zombie)1. 等待一个进程当用 fork 函数调用启动一个子进程时,子进程就有了它自己的生命周期并将独立运行。可以通过在父进程中调用 wait 函数让父进程等待子进程结束。wait 函数#include <sys/types.h>#include <sys/wait.h>...原创 2019-04-08 18:36:07 · 957 阅读 · 0 评论 -
2.1 Linux 启动新进程
启动新进程system 函数(使用 shell 启动新进程)exec 函数(替换进程映像,并未创建新的进程)fork 函数(复制进程映像,创建新进程,父子关系:原进程与新进程)1. system 函数(使用 shell 启动新进程)在一个程序的内部启动另一个程序,从而创建一个新进程。system 函数确实创建了一个新的进程,但是新进程和原进程之间没有父子关系!仅仅是用一个 sh...原创 2019-04-07 20:22:51 · 746 阅读 · 0 评论 -
数据结构:缓冲区/缓存简单实现
利用 取余运算 使得读/写指针在长度为 capacity 的连续内存空间上循环进行读/写操作(待加入:线程安全的读/写函数)目录头文件 buffer.h源文件 buffer.c1. 头文件 buffer.h/* buffer.h */#include <stdlib.h>#include <stdio.h>#include <errno.h&...原创 2019-04-12 17:34:34 · 2737 阅读 · 1 评论 -
Linux 线程
目录线程操作函数( pthread_create / pthread_join / pthread_exit)(C 与 Java 实现对比)(编译程序时需要用选项 ‘-pthread’ 来链接线程库)1. 线程操作函数(创建一个新的线程,C 语言 与 Java 对比)C 语言实现,代码如下:/* test1.c */#include <stdio.h>#in...原创 2019-04-10 17:02:48 · 146 阅读 · 0 评论 -
Java与C语言中的命令行参数获取
0. Java 语言和 C 语言中的命令行参数的获取(对比)Java 获取命令行参数,简单代码如下:/** Test_1.java */package com.willhonor.test;public class Test_1 { public static void main(String[] args) { int count = 1; System.out.prin...原创 2019-06-05 23:42:52 · 279 阅读 · 0 评论