
嵌入式
文章平均质量分 84
liuy5277
这个作者很懒,什么都没留下…
展开
-
Linux系统调用 - 文件操作
系统调用方式创建文件 - 测试程序一: test.c#include#include#include#include#include void create_file(char *filename){ if(creat(filename, 0755)创建一个文件赋予755权限 printf("create原创 2012-12-16 21:07:39 · 964 阅读 · 0 评论 -
进程控制(fork和exit)
fork vs vfork1. 成功调用一次,返回两个值,子进程返回0,父进程返回子进程的pid;出错返回-12. 头文件: #include #include 3. fork函数会拷贝父进程的数据空间、堆栈等资源,这样就会有两份数据,与父进程不相干扰。4. vfork函数不会拷贝父进程的资源,与父进原创 2013-11-20 13:39:51 · 4998 阅读 · 0 评论 -
静态、动态内存分配比较
首先,在使用动态分配内存技术前,必须明白自己在做什么,这样做与其它的方法有什么不同,特别是会产生哪些负面影响,天下没有免费的午餐。动态分配内存与静态分配内存的区别:1) 静态内存分配是在编译时完成的,不需要占用CPU资源;动态分配内存是在运行时完成的,动态内存的分配与释放需要占用CPU资源;2) 静态内存分配是在栈上分配的,动态内存是堆上分配的;3) 动态内存分配需要指针或引用数据类型转载 2013-11-11 22:56:05 · 1349 阅读 · 0 评论 -
exec 函数示例
execv.c #include #include #include extern char **environ; void main(int argc, char* argv[]){ printf("In execv func.\n"); execv("linuxdba",argv); //跳转原创 2013-11-20 18:20:05 · 1858 阅读 · 0 评论 -
linux 进程控制
获取进程ID:pid_tgetpid(void) // 获取当前进程的进程IDpid_tgetppid(void) //获取父进程IDExample:#include #include int main(){ intpid, ppid;原创 2012-12-20 23:28:05 · 1309 阅读 · 0 评论 -
Linux 进程间通讯之创建无名管道和读写无名管道
Linux进程间通讯的方式:1. 管道(pipe)和有名管道(FIFO).2. 信号(signal)3. 消息队列4. 共享内存5. 信号量6. 套接字(socket) 管道通讯:无名管道:由pipe()函数创建,int pipe(int filedis[2]), 当管道建立时有两个文件描述符,file原创 2012-12-21 21:15:07 · 5420 阅读 · 0 评论 -
多线程之pthread_create创建线程
pthreads定义了一套C程序语言类型、函数、与常量。以pthread.h和一个线程库实现。数据类型:pthread_t:线程句柄pthread_attr_t:线程属性线程操作函数:pthread_create():创建一个线程pthread_exit():终止当前线程pthread_cancel():中断另外一个线程的运行pthread_join():阻塞当前的原创 2013-01-20 23:26:08 · 7781 阅读 · 0 评论 -
linux 时间编程
时间编程: 日历时间获取:time_t time(time_t *tloc)功能:获取日历时间,即从1970年1月1日0点到所经历的秒数。/*typedef long time_t */Example:#include #include int main(){ time_t lt; lt = time(NULL);原创 2012-12-19 19:09:38 · 1598 阅读 · 0 评论 -
多线程设计之线程清理pthread_cleanup
线程清理:pthread_cleanup_push() & pthread_cleanup_pop() A cancellation clean-up handler is poppedfrom the stack and executed inThe following circumstances:(三种情况会执行线程清理)1. When a thread is原创 2013-01-21 23:30:56 · 1941 阅读 · 0 评论 -
Linux 库函数实现文件操作
1. Linux系统调用,文件的描述符使用的是一个整数,库函数访问文件使用FILE类型的指针去指向描述文件;2. 库函数不随系统平台而变,即不管win还是Linux都适用; 库函数 - 读文件size_t fread(void *ptr, size_t size, size_t n, FILE *stream)功能:从stream指向的文件中读取n个字段,每个字原创 2012-12-18 22:31:47 · 1493 阅读 · 0 评论 -
Linux 进程间通讯之共享内存方式
共享内存方式:从物理内存里面拿出来一部分作为多个进程共享。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入数据,共享这个内存的所有进程都可以立即看到其中内容。 共享内存实现步骤:一、创建共享内存,使用shmget函数。二、映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数。 创建共享内存shmget:intshmget(原创 2012-12-23 15:39:25 · 1845 阅读 · 0 评论 -
Makefile编写
第一节:Makefilehello:hello.c gcc -o hello hello.cclean: rm hellohello 为目标,hello.c为依赖,gcc和rm是命令。 编译的时候默认会到当前目录下面找makefile和Makefile文件,如果没有会报错,可以手动指定makefile文件,使用make -原创 2012-12-16 19:04:26 · 954 阅读 · 0 评论 -
Linux 进程间通讯之信号方式
创建几种信号:SIGHUP: 从终端上发出的结束信号SIGINT:来自键盘的中断信号(Ctrl-C)SIGQUIT:来自键盘的退出信号(Ctrl-\)SIGKILL:该信号结束接收信号的进程SIGTERM: kill命令发出的信号SIGCHLD:标识子进程停止或结束的信号SIGSTOP:来自键盘(Ctrl-Z)或调试程序的停止执行信号 信号处理:一、忽略原创 2012-12-22 23:15:57 · 1922 阅读 · 0 评论 -
Linux 进程间通讯之有名管道方式
有名管道mkfifo:intmkfifo(const char *pathname, mode_t mode)pathname: FIFO文件名mode: 属性一旦创建了了FIFO,就可open去打开它,可以使用open,read,close等去操作FIFO当打开FIFO时,非阻塞标志(O_NONBLOCK)将会对读写产生如下影响:1、没有使用O_NONBLOCK:访问原创 2012-12-22 21:54:46 · 8129 阅读 · 0 评论