https://www.iteye.com/blog/lobin-1663268
-
C: Linux C 编程 - 属性__attribute__ ((attribute-list)) https://www.iteye.com/blog/lobin-2516444
-
C: Linux C 编程 - once init https://www.iteye.com/blog/lobin-2517156
-
C: Linux C 编程 - dynamic linking loader https://www.iteye.com/blog/lobin-2516987
-
C: Linux C 编程 - 编写静态链接库 https://www.iteye.com/blog/lobin-2326336
-
C: Linux C 编程 - 编写动态链接库 https://www.iteye.com/blog/lobin-2437639
-
C: Linux C 编程 - 编写动态链接库(2) https://www.iteye.com/blog/lobin-2516986
-
C: Linux C 编程 - 编写动态链接库(3)https://www.iteye.com/blog/lobin-2524416
-
C: Linux C 编程 - Cygwin下编写动态链接库 https://www.iteye.com/blog/lobin-2516938
-
C: Linux C 编程 - 文件 https://www.iteye.com/blog/lobin-2517059
-
C: Linux C 编程 - 文件描述符 https://www.iteye.com/blog/lobin-2516961
-
C: Linux C 编程 - 文件操作 https://www.iteye.com/blog/lobin-2347235
-
C: Linux C 编程 - clone https://www.iteye.com/blog/lobin-2517308
-
C: Linux C 编程 - 线程 https://www.iteye.com/blog/lobin-2516877
-
C: Linux C 编程 - 线程属性 https://www.iteye.com/blog/lobin-2516888
-
C: Linux C 编程 - 线程继承调度属性 https://www.iteye.com/blog/lobin-2435049
-
C: Linux C 编程 - 线程调度参数 https://www.iteye.com/blog/lobin-2436797
-
C: Linux C 编程 - 线程私有数据 https://www.iteye.com/blog/lobin-2517155
-
C: Linux C 编程 - 线程终止 https://www.iteye.com/blog/lobin-2516889
-
C: Linux C 编程 - 线程函数返回 https://www.iteye.com/blog/lobin-2328164
-
C: Linux C 编程 - 线程退出 https://www.iteye.com/blog/lobin-2436748
-
C: Linux C 编程 - 线程通信 https://www.iteye.com/blog/lobin-2516885
-
C: Linux C 编程 - 通过clone方式创建线程 https://www.iteye.com/blog/lobin-2517309
-
C: Linux C 编程 - 互斥锁 https://www.iteye.com/blog/lobin-2381977
-
C: Linux C 编程 - 自旋锁 https://www.iteye.com/blog/lobin-2435437
-
C: Linux C 编程 - 条件变量 https://www.iteye.com/blog/lobin-2384783
-
C: Linux C 编程 - 进程 https://www.iteye.com/blog/lobin-2433236
-
C: Linux C 编程 - fork https://www.iteye.com/blog/lobin-2516446
-
C: Linux C 编程 - 子进程退出 https://www.iteye.com/blog/lobin-2517136
-
C: Linux C 编程 - 守护进程 https://www.iteye.com/blog/lobin-2517093
-
C: Linux C 编程 - 僵尸进程 https://www.iteye.com/blog/lobin-2517135
-
C: Linux C 编程 - IPC https://www.iteye.com/blog/lobin-2347234
-
C: Linux C 编程 - 父子进程间通信 https://www.iteye.com/blog/lobin-2516972
-
C: Linux C 编程 - 同步 https://www.iteye.com/blog/lobin-2516886
-
C: Linux C 编程 - 共享内存 https://www.iteye.com/blog/lobin-2431415
-
C: Linux C 编程 - 管道 https://www.iteye.com/blog/lobin-2431418
-
C: Linux C 编程 - 命名管道 https://www.iteye.com/blog/lobin-2517060
-
C: Linux C 编程 - socket https://www.iteye.com/blog/lobin-2351329
-
C: Linux C 编程 - AF_INET6 https://www.iteye.com/blog/lobin-2517137
-
C: Linux C 编程 - AF_UNIX https://www.iteye.com/blog/lobin-2516971
-
C: Linux C 编程 - SOCK_DGRAM https://www.iteye.com/blog/lobin-2517537
-
C: Linux C 编程 - 广播 https://www.iteye.com/blog/lobin-2517540
-
C: Linux C 编程 - 组播 https://www.iteye.com/blog/lobin-2517542
-
C: Linux C 编程 - 信号量 https://www.iteye.com/blog/lobin-2344060
-
C: Linux C 编程 - 信号处理 https://www.iteye.com/blog/lobin-2435795
-
C: Linux C 编程 - 系统调用 https://www.iteye.com/blog/lobin-2517826
-
C: Linux C 编程 - select https://www.iteye.com/blog/lobin-2517787
-
C: Linux C 编程 - poll https://www.iteye.com/blog/lobin-2517799
-
C: Linux C 编程 - epoll https://www.iteye.com/blog/lobin-2435794
-
C: Linux C 编程 - 网络编程 https://www.iteye.com/blog/lobin-2516890
-
C: Linux C 编程 - Mysql https://www.iteye.com/blog/lobin-2520001
-
C: Linux C 编程 - Mail https://www.iteye.com/blog/lobin-2520004
-
C: Linux C 编程 - 图像处理 https://www.iteye.com/blog/lobin-2516443
-
C: Linux C 编程 - SDL图像处理 https://www.iteye.com/blog/lobin-2516506
-
C: Linux C 编程 - FFmpeg多媒体 https://www.iteye.com/blog/lobin-2346290
-
C: Linux C 编程 - SDL音频处理 https://www.iteye.com/blog/lobin-2516507
-
C: Linux C 编程 - SDL+mpg123音频处理 https://www.iteye.com/blog/lobin-2437638
-
C: Linux C 编程 - SDL视频处理 https://www.iteye.com/blog/lobin-2437866
-
C: Linux C 编程 - SDL多媒体 https://www.iteye.com/blog/lobin-2508590
静态链接库
动态链接库
C标准库
进程和线程
进程是系统进行资源分配和调度的基本单位。
进程其实也存在父子关系,也存在进程组,还有进程组leader。
在程序中我们也可以创建进程。
创建进程最简单的方式就是通过fork,通过这个系统调用可以简单的创建一个进程。需要注意的是,通过这种方式创建的进程是子进程。
另外一种创建进程的方式就是通过clone系统调用。
线程detach状态
如果线程已经处于detached状态,当线程终止时,线程资源将自动释放还给系统。这不同于joinable状态的线程,线程终止时需要通过调用pthread_join来释放线程资源。
如果线程已经处于detached状态,不能再将线程设置为joinable状态。
并且如果线程已经处于detached状态,如果再尝试detach,将导致不确定的行为,可能会导致程序中断退出。
pthread_attr_setdetachstate
函数原型
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
pthread_attr_getdetachstate
函数原型
int pthread_attr_getdetachstate(const pthread_attr_t *attr, int *detachstate);
设置线程detach状态为joinable状态
线程detach状态默认就是joinable状态,所以其实不用设置。
#include <stdio.h> #include <pthread.h> void* start_routine(void *arg) { char *name = (char *) (arg); printf("thread %s called.\n", name); return NULL; } int main() { pthread_t pthread; pthread_attr_t attr; if (pthread_attr_init(&attr)) { return -1; } if (pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE)) { return -1; } pthread_create(&pthread, &attr, start_routine, "#1"); pthread_attr_destroy(&attr); return 0; }
设置线程detach状态为detached状态
#include <stdio.h> #include <pthread.h> void* start_routine(void *arg) { char *name = (char *) (arg); printf("thread %s called.\n", name); return NULL; } int main() { pthread_t pthread; pthread_attr_t attr; if (pthread_attr_init(&attr)) { return -1; } if (pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED)) { return -1; } pthread_create(&pthread, &attr, start_routine, "#1"); pthread_attr_destroy(&attr); return 0; }
相关推荐
Linux C编程从初学到精通,是许多程序员学习Linux C的起点,它通过实例讲解和理论结合的方式,帮助读者理解Linux环境下C语言编程的各个方面。 首先,初学者需要了解Linux操作系统的基础知识,包括Linux的文件系统...
《LinuxC编程实战》内容翔实,主要包括:Linux系统下C语言及其编程环境的介绍,系统编程的所 有主题——文件和目录、进程、线程、信号、进程间通信、网络编程和图形界面编程、出错处理、库的 创建与使用、编写...
《Linux C语言编程实战》这本书旨在帮助读者深入理解这两种技术,并通过实践来提升技能。源代码是学习过程中不可或缺的一部分,因为它使读者能够直接查看和运行程序,从而加深对概念的理解。 首先,我们要了解Linux...
《宋劲杉-Linux C编程一站式学习》这本书深入浅出地介绍了Linux环境下的C语言编程技术,涵盖了从基础语法到高级特性的全方位知识。作者宋劲杉,毕业于清华大学,以其深厚的学术背景和实践经验,为读者提供了宝贵的...
在“精通Linux C编程源代码”这个主题中,我们探讨的是如何在Linux操作系统环境下使用C语言进行高效且灵活的程序开发。C语言是系统级编程的基石,而在Linux这一开源操作系统上,C语言更是得到了广泛的应用,从内核...
嵌入式 linux c 编程、入门超好的教材
《精通Linux C编程》是一本深入探讨Linux环境下C语言编程技术的专业书籍,旨在帮助读者从基础知识到高级技巧全面掌握Linux下的C编程。源码和光盘资料提供了丰富的实践素材,以便学习者能够理论结合实际,加深对编程...
《Linux C编程实战》是董永清先生撰写的一本深入探讨Linux环境下C语言编程的书籍。这本书籍旨在帮助读者掌握在Linux系统上进行C语言编程的基础知识和高级技巧,为软件开发人员提供实用的指导。光盘附带的资料包含了...
Linux C编程实战光盘的内容涵盖了Linux操作系统环境下的C语言编程技术,这是一本结合理论与实践的书籍。在Linux系统中,C语言是基础且强大的编程工具,它提供了低级别的系统访问权限,使得开发者能够创建高效、可靠...
第一篇 Linux和C编程基础 第1章 Linux系统概述 1.1 Linux操作系统介绍 1.1.1 Linux的发展历程 1.1.2 Linux的特性 1.1.3 Linux的内核版本和发行版本 1.2 C语言简介 1.2.1 C语言的...
深入浅出、循序渐进地讲解了Linux平台下的C程序设计,并通过大量的程序实例,以及综合开发案例的演示,帮助读者快速掌握Linux下C语言编程的方法和技巧。《Linux C编程从初学到精通》内容翔实,共分为三大部分。第一...
1. **基本的C语言编程**:讲解C语言的基本语法,如变量声明、常量、数据类型、运算符、流程控制语句(if、switch、for、while)、函数定义与调用等。 2. **内存管理与指针**:深入讲解指针的概念,如何使用指针操作...
在《Linux C编程实战》这本书的随书光盘中,我们能够找到一系列关于Linux系统下C语言编程的实践性资源。这些资源对于学习者来说是极其宝贵的,它们可以帮助读者深入理解C语言在Linux环境下的应用,提升编程技能,...
接着,"Linux下C编程_源代码"这部分则包含了一系列C语言编程的实例。这些源代码涵盖了基本输入输出、文件操作、进程通信、线程管理、系统调用等主题。通过阅读和运行这些代码,开发者可以深入理解C语言在Linux系统中...
这份"Linux C编程资料大全"涵盖了从基础到高级的全方面知识,旨在帮助开发者深入理解和掌握C语言在Linux环境下的运用。 首先,Linux是开源的操作系统,其内核由C语言编写,因此,Linux C编程涉及对操作系统内核接口...
在深入探讨“Linux C编程实战”这一主题时,我们首先要理解Linux操作系统的基础和C语言的编程原理。Linux是一个开源的、类Unix的操作系统,而C语言则是一种强大的、低级的编程语言,常用于系统级编程,如操作系统、...
首先,Linux是开源的操作系统,其内核由C语言编写,因此,对于想要深入理解系统底层运作的人来说,学习Linux C编程是必不可少的。C语言的简洁、高效和灵活性使得它成为编写系统级软件的理想选择。 Linux环境下的C...