`
zhangyafei_kimi
  • 浏览: 266037 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

异步信号安全的posix函数(备忘)

阅读更多
可重入就是异步信号安全。可重入的要求比多线程安全更严格。
crt的io函数和malloc、free函数都不是可重入的。但是有的字符串处理函数可重入。


满足下列条件的函数是不可重入的:
    1) 函数体内使用了静态的数据结构;
    2) 函数体内调用了malloc() 或者free() 函数;
    3) 函数体内调用了标准I/O 函数。


如何编写可重入的函数:
    1) 不要使用全局变量。因为别的代码很可能覆盖这些变量值。
    2) 不能调用其它任何不可重入的函数。
    3) 在和硬件发生交互的时候,切记执行类似disinterrupt() 之类的操作,就是关闭硬件中断。完成交互记得打开中断,在有些系列上,这叫做“ 进入/ 退出核心” 。
    4) 谨慎使用堆栈。最好先在使用前先OS_ENTER_KERNAL 。



记录一下异步信号安全(可重入)的系统调用:
_Exit()
_exit()
abort()
accept()
access()
aio_error()
aio_return()
aio_suspend()
alarm()
bind()
cfgetispeed()
cfgetospeed()
cfsetispeed()
cfsetospeed()
chdir()
chmod()
chown()
clock_gettime()
close()
connect()
creat()
dup()
dup2()
execle()
execve()
fchmod()
fchown()
fcntl()
fdatasync()
fork()


fpathconf()
fstat()
fsync()
ftruncate()
getegid()
geteuid()
getgid()
getgroups()
getpeername()
getpgrp()
getpid()
getppid()
getsockname()
getsockopt()
getuid()
kill()
link()
listen()
lseek()
lstat()
mkdir()
mkfifo()
open()
pathconf()
pause()
pipe()
poll()
posix_trace_event()
pselect()
raise()
read()
readlink()
recv()
recvfrom()
recvmsg()
rename()
rmdir()
select()
sem_post()
send()
sendmsg()
sendto()
setgid()
setpgid()
setsid()
setsockopt()
setuid()
shutdown()
sigaction()
sigaddset()
sigdelset()
sigemptyset()
sigfillset()
sigismember()
sleep()
signal()
sigpause()
sigpending()
sigprocmask()
sigqueue()
sigset()
sigsuspend()
sockatmark()
socket()
socketpair()
stat()
symlink()
sysconf()
tcdrain()
tcflow()
tcflush()
tcgetattr()
tcgetpgrp()
tcsendbreak()
tcsetattr()
tcsetpgrp()
time()
timer_getoverrun()
timer_gettime()
timer_settime()
times()
umask()
uname()
unlink()
utime()
wait()
waitpid()
write()
分享到:
评论

相关推荐

    DELPHI个人备忘录

    DELPHI的TThread类可以帮助你创建和管理线程,而TTask或TMemoTask则可以实现异步任务,比如定时检查提醒。 6. **错误处理与调试**:良好的错误处理机制是任何应用程序不可或缺的一部分。DELPHI提供了Try...Except.....

    android备忘录源码

    在Android平台上,开发一款备忘录应用是一种常见的实践,它能帮助用户记录日常生活中的琐事、待办事项或重要信息。本源码提供了一个完整的Android备忘录应用的实现,对于学习Android应用开发或者想要深入理解备忘录...

    jquery+bootstrap 实现简单备忘录

    例如,我们可以使用jQuery的`$(document).ready()`函数确保页面加载完成后执行初始化操作,使用`$.ajax()`方法发送异步请求,更新服务器上的备忘录数据。 Bootstrap是Twitter开发的开源前端框架,它提供了响应式...

    memoasync:记录 Clojure 异步函数

    备忘录同步记住返回core.async通道的异步函数。问题Clojure 有一个标准库函数函数,它记住函数的结果,并且在后续调用中返回相同的值,因此不必再次计算。 对于相对昂贵的调用来说,这是一个方便的优化,并且对于...

    微信小程序-备忘录案例

    在这个备忘录案例中,如果需要同步或异步地从服务器获取或保存备忘数据,可以使用微信小程序的网络请求API,如`wx.request()`。对于用户身份的验证,可以利用`wx.login()`接口获取临时登录凭证。 总结来说,"微信小...

    微信小程序备忘录.zip

    在备忘录应用中,可能用到的API包括获取用户授权(如存储权限)、网络请求(同步或异步上传/下载数据)、本地存储(保存备忘录内容)等。 5. **事件处理**:微信小程序支持多种事件,如点击、滑动等。通过绑定事件...

    基于Android平台备忘录软件设计毕业论文.doc

    * 备忘录软件的数据存储不够安全。 * 备忘录软件的功能不够完善。 结语 本文主要研究了基于Android平台备忘录软件的设计和实现。我们设计了一款备忘录软件,实现了备忘录的创建、编辑、删除和查询等功能。同时,...

    Android开发的多媒体备忘录(含代码)

    6. **源代码分析**:提供源代码意味着开发者可以学习和研究项目的实现细节,包括事件监听、回调函数、异步任务处理、资源管理等方面。这对于初学者或希望提升技能的开发者来说是一份宝贵的资料。 7. **大赛作品**:...

    技术备忘录之十一

    【标题】:“技术备忘录之十一”主要探讨的是与音频处理相关的技术,可能是关于一个音频引擎的实现或优化。这个备忘录可能涉及到如何在软件中管理和操作音频数据,以及如何利用特定工具来提高音频处理的效率和质量。...

    oracle 数据库工作备忘录

    - **GoldenGate**:实时数据复制解决方案,支持异步和同步模式。 7. **数据库设计与管理** - **范式理论**:指导关系数据库设计的理论基础,如第一范式、第二范式等。 - **约束(Constraints)**:确保数据的...

    备忘:jquery的一些实例

    5. **AJAX交互**:jQuery的`$.ajax()`函数简化了异步数据请求,使得开发者可以轻松地进行JSON、XML等格式的数据交换。 6. **jQuery UI Dialog**:`$.ui.dialog`是jQuery UI库的一部分,用于创建可自定义的对话框。...

    Android应用源码精致备忘录+课程表项目

    "JavaApk源码说明.txt"文件可能包含了项目的详细说明,如代码结构、主要类和函数的解释,以及如何运行和测试项目。对于学习者来说,这是一个宝贵的资源,能够指导他们理解代码的实现逻辑和设计思路。 至于...

    微信小程序源码-小工具类:备忘录.rar

    在这个“微信小程序-小工具类:备忘录”的项目中,我们可以深入探讨微信小程序的开发技术以及备忘录应用的实现。 1. 微信小程序框架: 微信小程序基于微信自己的开发框架WXML(WeChat Markup Language)和WXSS...

    源代码:网站制作备忘录.rar

    它能处理用户输入、改变DOM(文档对象模型)、执行异步通信(AJAX)和创建动画。了解变量、数据类型、函数、条件语句、循环和事件监听是JavaScript基础。DOM允许通过JavaScript访问和修改HTML元素,而AJAX则实现了...

    HTML网页助手,包括JS万年历、闹钟、备忘录 常用查询.rar

    4. **天气预报**:天气预报功能通常需要从外部API获取数据,如OpenWeatherMap等,然后使用Ajax(Asynchronous JavaScript and XML)或Fetch API异步加载数据。数据解析(JSON对象)和展示也需要JavaScript处理。 5....

    vbscript 备忘录

    例如,它可能包含定义函数的代码,这些函数会在特定的事件触发时执行。 `clock.gif`和`icon64.gif`可能是备忘录网页中的图像资源,用于增强用户体验,如用作时钟的图形界面或者作为功能按钮的图标。在VBScript中,...

    fjjxxy-kotlin-note-master.zip

    【Kotlin备忘录——新手入门指南】 Kotlin是一种现代的、面向对象的编程语言,由JetBrains公司开发,主要用于Android应用开发,同时也被广泛应用于Web后端和跨平台开发。"fjjxxy-kotlin-note-master.zip"是一个专门...

    基于jQuery实现的带备忘录功能的日期选择器特效源码.zip

    1. **事件处理**:jQuery的事件绑定机制,如`.on()`方法,用于监听用户的输入或选择行为,触发相应的函数来更新日期和备忘录。 2. **Ajax**:如果备忘录需要实时同步到服务器,开发者可能使用Ajax异步请求,通过$....

    mootools 1.2 ajax使用备忘

    **MooTools 1.2 AJAX 使用备忘** MooTools 是一个轻量级的JavaScript框架,它提供了许多实用的功能,包括对AJAX(异步JavaScript和XML)的支持。在MooTools 1.2 版本中,AJAX功能得到了进一步的优化,使得开发者...

    javascript语法备忘.doc

    此外,JavaScript 还提供了数组、对象、函数表达式、箭头函数、闭包等高级特性,以及异步编程的回调函数、Promise 和 async/await 等机制,这些在实际开发中非常关键。理解并熟练运用这些基础知识,将有助于编写出...

Global site tag (gtag.js) - Google Analytics