摘要:
父进程通过fork()函数创建子进程,将父进程数据段和栈的内容拷贝到子进程中,子进程执行程序execve创建新程序,调用exit函数退出到等待wait(),挂起父进程, 父子进程享用相同的程序文本段。 在父进程中,fork 新创建进程的进程id,在子进程中返回0,失败-1, 如果子进程更新了文件偏移 阅读全文
摘要:
父进程如何知道子进程是否死了呢, wait4()系统调用允许进程等待直到其中的一个子进程结束,它返回已终止子进程的进程标识符(PID) 内核在执行这个系统调用时,检查子进程是否终止,引入僵死进程的特殊状态是为了表示终止的进程,父进程执行完wait4()系统调用之前,进程就一直停留在那种状态,系统调用 阅读全文
摘要:
1.系统调用 必须检查参数是否有效,系统调用在内核空间调用,安全性 2.文件io检查文件描述符,进程检查pid 3.保护用户提供的指针是否有效 在接收一个用户指针之前 1.指针指向的内存区域属于用户空间,进程决不能哄骗内核去读内核进程里的数据 2.指针指向的内存区域在进程的地址空间里,进程决不能哄骗 阅读全文
摘要:
地址空间是允许进程引用的内存地址集合 程序和进程的区别 1、几个进程能并发地执行同一程序,同一进程能顺序执行几个程序 软链接和硬链接 2.当文件由一个进程创建时,该文件的id就是进程的id,同理,用户组ID也一样 3.当一个程序在用户态下执行时,他不能直接访问内核数据和内核程序,然而,当用户程序在内 阅读全文
摘要:
我们可以自己建立自己的工程了,但这一步只是开发中的第一小步。今天就来说说开发中举足轻重的另外一件事:调试。其实调试本身也并不难,楼主总结,调试关键在于两件事,一是运行,二是观察,为了更好的实现这两者,就牵涉到如何设置断点。运行很简单了,仔细观察调试工具栏:从左向右依次是:复位,暂停,步过,步入,步出... 阅读全文
摘要:
win +r win7下运行 //linux主机地址sudo smbpasswd -a 用户名 添加用户和密码 阅读全文
摘要:
typedef void (*func_ptr)(void);func_ptr usm_rom_set_tx2_drive_strength_hs;定义一个函数指针类型。比如你有三个函数:void hello(void) { printf("你好!"); }void bye(void) { prin... 阅读全文
摘要:
typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; 阅读全文
摘要:
/SPI2读写一个字节//TxData:要写入的字节//返回值:读取到的字节u8SPI2_ReadWriteByte(u8TxData){ u16retry=0; while((SPI2->SR&1=0XFFFE)return0; //超时退出} SPI2->DR=TxData; //发送一个b... 阅读全文
摘要:
在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义;在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。所谓有效的参数是指满足规定范围的参数... 阅读全文