RTEMS POSIX API 用户指南



RTEMS POSIX API 用户指南

posix_users.RTEMS_POSIX_API用户指南.双语.V20131224.pdf
RTEMS 的posix_users文档的原创翻译。
RTEMS 文档一共有12篇,我已经译了8篇,有两篇没有翻译价值,还有两篇没有译,暂时也不会译了。这是最后一篇。

目录

前言 27
致谢 27
1  进程创建和执行管理器 29
1.1  简介 29
1.2  背景知识 30
1.3  操作 30
1.4  指令 30
1.4.1  fork - 创建进程 31
1.4.2  execl - 执行一个文件 32
1.4.3  execv - 执行一个文件 33
1.4.4 execle - 执行一个文件 34
1.4.5  execve - 执行一个文件 35
1.4.6  execlp - 执行一个文件 36
1.4.7  execvp - 执行一个文件 37
1.4.8  pthread_atfork - 寄存器分叉处理程序 38
1.4.9  wait - 等待进程终止 39
1.4.10  waitpid - 等待进程终止 40
1.4.11  _exit - 终止进程 41
2  信号管理器 43
2.1  简介 43
2.2  背景知识 44
2.2.1  信号 44
2.2.2  信号传送 45
2.3  操作 46
2.3.1  信号集管理 46
2.3.2  阻塞直到信号产生 46
2.3.3  发送信号 47
2.4  指令 47
2.4.1  sigaddset - 添加信号到信号集 48
2.4.2  sigdelset - 从信号集删除信号 49
2.4.3  sigfillset - 填充信号集 50
2.4.4  sigismember - 信号是信号集的成员吗? 51
2.4.5  sigemptyset - 清空信号集 52
2.4.6  sigaction - 检查和更改信号的操作 53
2.4.7  pthread_kill - 发送信号到线程 56
2.4.8  sigprocmask - 检查和更改进程阻塞的信号 57
2.4.9  pthread_sigmask - 检查和更改线程阻塞的信号 59
2.4.10  kill - 发送信号到进程 61
2.4.11  sigpending - 检查挂起的信号 62
2.4.12  sigsuspend - 等待一个信号 63
2.4.13  pause - 推迟进程执行 64
2.4.14  sigwait - 同步接受信号 65
2.4.15  sigwaitinfo - 同步接受信号 66
2.4.16  sigtimedwait - 同步接受具有超时的信号 68
2.4.17  sigqueue - 排队信号到进程 70
2.4.18  alarm - 调度警报 72
2.4.19  ualarm - 以微秒为单位的警报 73
3  进程环境管理器 75
3.1  简介 75
3.2  背景知识 76
3.2.1  用户和组 76
3.2.2  用户和组的名称 77
3.2.3  环境变量 78
3.3  操作 78
3.3.1  访问用户和组id 78
3.2.2  访问环境变量 78
3.4  指令 79
3.4.1  getpid - 获得进程ID 80
3.4.2  getppid - 获得父进程ID 81
3.4.3  getuid - 获得用户ID 82
3.4.4  geteuid - 获得有效用户ID 83
3.4.5  getgid - 获得真实组ID 84
3.4.6  getegid - 获得有效组ID 85
3.4.7  setuid - 设置用户ID 86
3.4.8  setgid - 设置组ID 87
3.4.9  getgroups - 获得补充组ID 88
3.4.10  getlogin - 获得用户名 89
3.4.11  getlogin_r - 可重入地获得用户名 90
3.4.12  getpgrp - 获得进程组ID 91
3.4.13  setsid - 创建会话和进程组ID 92
3.4.14  setpgid - 设置作业控制的进程组ID 93
3.4.15  uname - 获得系统名称 94
3.4.16  times - 获得进程时间 95
3.4.17  getenv - 获得环境变量 96
3.4.18  setenv -设置环境变量 97
3.4.19  ctermid - 生成终端路径名 98
3.4.20  ttyname - 确定终端设备名称 99
3.4.21  ttyname_r - 可重入地确定终端设备名称 100
3.4.22  isatty - 确定文件描述符是否是终端 101
3.4.23  sysconf - 获得可配置的系统变量 102
4  文件和目录管理器 103
4.1  简介 103
4.2  背景知识 105
4.2.1  路径名评估 105
4.3  操作 105
4.4  指令 106
4.4.1  opendir - 打开目录 107
4.4.2  readdir - 读取目录 109
4.4.3  rewinddir - 复位readdir()指针 111
4.4.4  scandir - 扫描匹配项的目录 112
4.4.5  telldir - 返回目录流中的当前位置 113
4.4.6  closedir - 结束目录读取操作 114
4.4.7  chdir - 更改当前工作目录 115
4.4.8  fchdir - 更改当前工作目录 117
4.4.9  getcwd - 获得当前工作目录 119
4.4.10  open - 打开文件 121
4.4.11  creat - 创建新文件或重写存在的文件 125
4.4.12  umask - 设置文件创建掩码 127
4.4.13  link - 创建指向文件的链接 128
4.4.14  symlink - 创建指向文件的符号连接 130
4.4.15  readlink - 获取符号链接目标的名称 132
4.4.16  mkdir - 创建目录 134
4.4.17  mkfifo - 创建FIFO特殊文件 136
4.4.18  unlink - 移除目录项 138
4.4.19  rmdir - 删除目录 140
4.4.20  rename - 重命名文件 142
4.4.21  stat - 获得关于文件的信息 145
4.4.22  fstat - 获得文件状态 147
4.4.23  lstat - 获得文件状态 148
4.4.24  access - 检查文件权限 149
4.4.25  chmod - 更改文件模式 151
4.4.26  fchmod - 更改文件权限 153
4.4.27  getdents - 获得目录项 155
4.4.28  chown - 更改文件所有者和/或组 157
4.4.29  utime - 更改inode的访问和/或修改时间 159
4.4.30  ftruncate - 截断文件到指定的长度 160
4.4.31  truncate - 截断文件到指定的权限 162
4.4.32  pathconf - 获得文件的配置值 164
4.4.33  fpathconf - 获得文件的配置值 167
4.4.34  mknod - 创建目录 170
5  输入和输出原始管理器 173
5.1  简介 173
5.2  背景知识 174
5.3  操作 174
5.4  指令 175
5.4.1  pipe - 创建进程间通道 176
5.4.2  dup - 复制打开文件描述符 177
5.4.3  dup2 - 复制打开文件描述符 178
5.4.4  close - 关闭文件 180
5.4.5  read - 从文件读取 181
5.4.6  write - 写入到文件 184
5.4.7  fcntl - 操纵打开文件描述符 186
5.4.8  lseek - 重定位读/写文件偏移量 190
5.4.9  fsync - 将文件的完整核心内状态与磁盘上的状态同步 192
5.4.10  fdatasync - 将文件的核心内数据与磁盘上的数据同步 193
5.4.11  sync - 安排文件系统更新 195
5.4.12  mount - 挂载文件系统 196
5.4.13  unmount - 卸载文件系统 197
5.4.14  readv - 从文件定向读取 198
5.4.15  writev - 定向写入到文件 200
5.4.16  aio_read - 异步读取 202
5.4.17  aio_write - 异步写入 203
5.4.18  lio_listio - I/O所指向的列表 204
5.4.19  aio_error - 检索异步I/O操作的错误状态 205
5.4.20  aio_return - 检索异步I/O操作的返回状态 206
5.4.21  aio_cancel - 取消异步I/O请求 207
5.4.22  aio_suspend - 等待异步I/O请求 208
5.4.23  aio_fsync - 异步文件同步化 209
6  设备特定的和类特定的功能管理器 211
6.1  简介 211
6.2  背景知识 212
6.3  操作 212
6.4  指令 212
6.4.1  cfgetispeed - 读取终端输入波特率 213
6.4.2  cfgetospeed - 读取终端输出波特率 214
6.4.3  cfsetispeed - 设置终端输入波特率 215
6.4.4  cfsetospeed - 设置终端输出波特率 216
6.4.5  tcgetattr - 获得终端属性 217
6.4.6  tcsetattr - 设置终端属性 218
6.4.7  tcsendbreak - 发送暂停到终端 219
6.4.8  tcdrain - 等待所有输出被传输到终端 220
6.4.9  tcflush - 丢弃终端数据 221
6.4.10  tcflow - 挂起/重启终端输出 222
6.4.11  tcgetpgrp - 获得前台进程组ID 223
6.4.12  tcsetpgrp - 设置前台进程组ID 224
7  适用于C编程语言管理器的语言特定的服务 225
7.1  简介 225
7.2  背景知识 226
7.3  操作 226
7.4  指令 227
7.4.1  setlocale - 设置当前的位置 228
7.4.2  fileno - 获取此文件的文件描述符编号 229
7.4.3  fdopen - 将流与文件描述符关联 230
7.4.4  flockfile - 获得文件流的所有权 231
7.4.5  ftrylockfile - 轮询获得文件流的所有权 232
7.4.6  funlockfile - 释放文件流的所有权 233
7.4.7  getc_unlocked - 在未锁定的情况下获得字符 234
7.4.8  getchar_unlocked - 在未锁定的情况下从stdin获得字符 235
7.4.9  putc_unlocked - 在未锁定的情况下放置字符 236
7.4.10 putchar_unlocked - 在未锁定的情况下放置字符到stdin 237
7.4.11  setjmp - 保存非本地跳转的上下文 238
7.4.12  longjmp - 非本地跳转到保存的上下文 239
7.4.13  sigsetjmp - 保存非本地跳转的具有信号状态的上下文 240
7.4.14  siglongjmp - 使用信号状态非本地跳转到保存的上下文 241
7.4.15  tzset - 初始化时间转换信息 242
7.4.16  strtok_r - 可重入地提取来自字符串的令牌 243
7.4.17  asctime_r - 可重入的struct tm到ASCII时间的转换 244
7.4.18  ctime_r - 可重入的time_t到ASCII时间的转换 245
7.4.19  gmtime_r - 可重入的UTC时间转换 246
7.4.20  localtime_r - 可重入的本地时间转换 247
7.4.21  rand_r - 可重入的随机数发生器 248
8  系统数据库管理器 249
8.1  简介 249
8.2  背景知识 249
8.3  操作 250
8.4  指令 250
8.4.1  getgrgid - 获得组文件的ID项 251
8.4.2  getgrgid_r - 可重入地获得组文件的ID项 252
8.4.3  getgrnam - 获得组文件的名称项 253
8.4.4  getgrnam_r - 可重入地获得组文件的名称项 254
8.4.5  getpwuid - 获得密码文件的UID项 255
8.4.6  getpwuid_r - 可重入地获得密码文件的UID项 256
8.4.7  getpwnam - 获得密码文件的名称项 257
8.4.8  getpwnam_r - 可重入地获得密码文件的名称项 258
9  信号量管理器 259
9.1  简介 259
9.2  背景知识 260
9.2.1  理论 260
9.2.2  "sem_t"结构 260
9.2.3  建立信号量属性集 260
9.3  操作 261
9.3.1  用作二进制信号量 261
9.4  指令 261
9.4.1  sem_init - 初始化未指定名称的信号量 262
9.4.2  sem_destroy - 销毁未指定名称的信号量 264
9.4.3  sem_open - 打开指定名称的信号量 265
9.4.4  sem_close - 关闭指定名称的信号量 267
9.4.5  sem_unlink - 断开已命名信号量 268
9.4.6  sem_wait - 等待信号量 270
9.4.7  sem_trywait - 非阻塞等待信号量 271
9.4.8  sem_timedwait - 等待信号量指定的时间 272
9.4.9  sem_post - 解锁信号量 274
9.4.10  sem_getvalue - 获得信号量的值 275
10  互斥体管理器 277
10.1  简介 277
10.2  背景知识 278
10.2.1  互斥体属性 278
10.2.2  PTHREAD_MUTEX_INITIALIZER 279
10.3  操作 279
10.4  服务 279
10.4.1  pthread_mutexattr_init - 初始化互斥体属性集 280
10.4.2  pthread_mutexattr_destroy - 销毁互斥体属性集 281
10.4.3 pthread_mutexattr_setprotocol - 设置阻塞协议 282
10.4.4  pthread_mutexattr_getprotocol - 获得阻塞协议 284
10.4.5  pthread_mutexattr_setprioceiling - 设置优先级上限 285
10.4.6  pthread_mutexattr_getprioceiling - 获得优先级上限 286
10.4.7  pthread_mutexattr_setpshared - 设置可见性 287
10.4.8  pthread_mutexattr_getpshared - 获得可见性 288
10.4.9  pthread_mutex_init - 初始化互斥体 289
10.4.10  pthread_mutex_destroy - 销毁互斥体 290
10.4.11  pthread_mutex_lock - 锁定互斥体 291
10.4.12  pthread_mutex_trylock - 轮询锁定互斥体 292
10.4.13  pthread_mutex_timedlock - 锁定具有超时的互斥体 293
10.4.14  pthread_mutex_unlock - 解锁互斥体 294
10.4.15  pthread_mutex_setprioceiling - 动态设置优先级上限 295
10.4.16  pthread_mutex_getprioceiling - 动态获得优先级上限 296
11  条件变量管理器 297
11.1  简介 297
11.2  背景知识 298
11.3  操作 298
11.4  指令 298
11.4.1  pthread_condattr_init -初始化条件变量属性集 299
11.4.2  pthread_condattr_destroy - 销毁条件变量属性集 300
11.4.3  pthread_condattr_setpshared - 设置进程共享属性 301
11.4.4  pthread_condattr_getpshared - 获得进程共享属性 302
11.4.5  pthread_cond_init - 初始化条件变量 303
11.4.6  pthread_cond_destroy - 销毁条件变量 304
11.4.7  pthread_cond_signal - 用信号发送条件变量 305
11.4.8  pthread_cond_broadcast - 广播条件变量 306
11.4.9  pthread_cond_wait - 等待条件变量 307
11.4.10  pthread_cond_timedwait - 超时等待条件变量 308
12  内存管理管理器 309
12.1  简介 309
12.2  背景知识 310
12.3  操作 310
12.4  指令 310
12.4.1  mlockall - 锁定进程的地址空间 311
12.4.2  munlockall - 解锁进程的地址空间 312
12.4.3  mlock - 锁定一系列进程地址空间 313
12.4.4  munlock - 解锁一系列进程地址空间 314
12.4.5  mmap - 映射进程地址到内存对象 315
12.4.6  munmap - 取消映射先前映射的地址 316
12.4.7  mprotect - 更改内存保护 317
12.4.8  msync - 内存对象同步 318
12.4.9  shm_open - 打开共享的内存对象 319
12.4.10  shm_unlink - 移除共享的内存对象 320
13  调度器管理器 321
13.1  简介 321
13.2  背景 321
13.2.1  优先级 321
13.2.2  调度策略 322
13.3  操作 323
13.4  指令 323
13.4.1  schedget_priority_min - 获得最低优先级值 324
13.4.2  sched_get_priority_max - 获得最高优先级值 325
13.4.3  sched_rr_get_interval - 获得时间片轮转量子 326
13.4.4  sched_yield - 让出处理器 327
14  时钟管理器 329
14.1  简介 329
14.2  背景知识 330
14.3  操作 330
14.4  指令 330
14.4.1  clock_gettime - 获取日历时间 331
14.4.2  clock_settime - 设置日历时间 332
14.4.3  clock_getres - 获得时钟分辨率 333
14.4.4  sleep - 延迟进程执行 334
14.4.5  usleep - 以微秒为单位延迟进程执行 335
14.4.6  nanosleep - 具有高分辨率的延迟 337
14.4.7  gettimeofday - 获得日历时间 338
14.4.8  time - 获得以秒为单位的时间 339
15  定时器管理器 341
15.1  简介 341
15.2  背景知识 341
15.3  操作 341
15.4  系统调用 342
15.4.1  timer_create - 创建每进程定时器 343
15.4.2  timer_delete - 删除每进程定时器 344
15.4.3  timer_settime - 设置下一个定时器到期时间 345
15.4.4  timer_gettime - 获得定时器上的剩余时间 346
15.4.5  timer_getoverrun - 获得定时器溢出计数 347
16  消息传递管理器 349
16.1  简介 349
16.2  背景知识 349
16.2.1  理论 350
16.2.2  消息 350
16.2.3  消息队列 350
16.2.4  建立消息队列属性集 351
16.2.5  队列上的消息通知 352
16.2.6  POSIX解释问题 353
16.3  操作 354
16.3.1  打开或创建消息队列 354
16.3.2  关闭消息队列 354
16.3.3  移除消息队列 354
16.3.4  发送消息到消息队列 355
16.3.5  从消息队列接收消息 355
16.3.6  在空队列上收到消息的通知 356
16.3.7  设置消息队列属性 357
16.3.8  获得消息队列属性 358
16.4  指令 358
16.4.1  mq_open - 打开消息队列 359
16.4.2  mq_close - 关闭消息队列 362
16.4.3  mq_unlink - 移除消息队列 363
16.4.4  mq_send - 发送消息到消息队列 365
16.4.5  mq_receive - 从消息队列接收消息 367
16.4.6  mq_notify - 通知进程消息可用 369
16.4.7  mq_setattr - 设置消息队列属性 371
16.4.8  mq_getattr - 获得消息队列属性 373
17  线程管理器 375
17.1  简介 375
17.2  背景知识 376
17.2.1  线程属性 377
17.3  操作 378
17.4  服务 378
17.4.1  pthread_attr_init - 初始化线程属性集 379
17.4.2  pthread_attr_destroy - 销毁线程属性集 381
17.4.3  pthread_attr_setdetachstate - 设置分离状态 382
17.4.4  pthread_attr_getdetachstate - 获得分离状态 384
17.4.5  pthread_attr_setstacksize - 设置线程栈大小 385
17.4.6  pthread_attr_getstacksize - 获得线程栈大小 386
17.4.7  pthread_attr_setstackaddr - 设置线程栈地址 387
17.4.8  pthread_attr_getstackaddr - 获得线程栈地址 388
17.4.9  pthread_attr_setscope - 设置线程调度作用域 389
17.4.10  pthread_attr_getscope - 获得线程调度作用域 391
17.4.11  pthread_attr_setinheritsched - 设置继承调度器标志 392
17.4.12  pthread_attr_getinheritsched - 获得继承调度器标志 394
17.4.13  pthread_attr_setschedpolicy - 设置调度策略 395
17.4.14  pthread_attr_getschedpolicy - 获得调度策略 397
17.4.15  pthread_attr_setschedparam - 设置调度参数 398
17.4.16  pthread_attr_getschedparam - 获得调度参数 399
17.4.17  pthread_create - 创建线程 400
17.4.18  pthread_exit - 终止当前线程 403
17.4.19  pthread_detach - 分离线程 405
17.4.20  pthread_join - 等待线程终止 406
17.4.21  pthread_self - 获得线程ID 408
17.4.22  pthread_equal - 比较线程ID 409
17.4.23  pthread_once - 动态包初始化 410
17.4.24  pthread_setschedparam - 设置线程调度参数 411
17.4.25  pthread_getschedparam - 获得线程调度参数 413
18  键管理器 415
18.1  简介 415
18.2  背景知识 415
18.3  操作 415
18.4  指令 416
18.4.1  pthread_key_create - 创建线程特定的数据键 417
18.4.2  pthread_key_delete - 删除线程特定的数据键 418
18.4.3  pthread_setspecific - 设置线程特定的键值 419
18.4.4  pthread_getspecific - 获得线程特定的键值 420
19  线程取消管理器 421
19.1  简介 421
19.2  背景知识 421
19.3  操作 421
19.4  指令 422
19.4.1  pthread_cancel -取消线程的执行 423
19.4.2  pthread_setcancelstate - 设置可取消性状态 424
19.4.3  pthread_setcanceltype - 设置可取消性类型 425
19.4.4  pthread_testcancel - 创建取消点 426
19.4.5  pthread_cleanup_push - 建立取消处理程序 427
19.4.6  pthread_cleanup_pop - 移除取消处理程序 428
20  由C库(libc)提供的服务 429
20.1  简介 429
20.2  标准工具函数(stdlib.h) 429
20.3  字符类型的宏和函数(ctype.h) 431
20.4  输入和输出(stdio.h) 432
20.5  字符串和内存(string.h) 434
20.6  信号处理(signal.h) 436
20.7  时间函数(time.h) 436
20.8  区域设置(locale.h) 436
20.9  可重入版本的函数 437
20.10  杂项宏和函数 440
20.11  可变参数列表 440
20.12  可重入的系统调用 440
21  由数学库(libm)提供的服务 441
21.1  简介 441
21.2  标准数学函数(math.h) 441
22  实现状态 445
命令和变量索引 447
概念索引 449

1  Process Creation and Execution Manager
1  进程创建和执行管理器

1.1  Introduction
1.1  简介
The process creation and execution manager provides the functionality associated with the creation and termination of processes.
进程创建和执行管理器提供与进程的创建和终止相关联的功能。

The directives provided by the process creation and execution manager are:
由进程创建和执行管理器提供的指令有:

 fork - Create a Process
 execl - Execute a File
 execv - Execute a File
 execle - Execute a File
 execve - Execute a File
 execlp - Execute a File
 execvp - Execute a File
 pthread_atfork - Register Fork Handlers
 wait - Wait for Process Termination
 waitpid - Wait for Process Termination
 _exit - Terminate a Process

 fork - 创建进程
 execl - 执行一个文件
 execv - 执行一个文件
 execle - 执行一个文件
 execve - 执行一个文件
 execlp - 执行一个文件
 execvp - 执行一个文件
 pthread_atfork - 寄存器分叉处理程序
 wait - 等待进程终止
 waitpid - 等待进程终止
 _exit - 终止进程


1.2  Background
1.2  背景知识
POSIX process functionality can not be completely supported by RTEMS. This is because RTEMS provides no memory protection and implements a single process, multi-threaded execution model. In this light, RTEMS provides none of the routines that are associated with the creation of new processes. However, since the entire RTEMS application (e.g. executable) is logically a single POSIX process, RTEMS is able to provide implementations of many operations on processes. The rule of thumb is that those routines provide a meaningful result. For example, getpid() returns the node number.
POSIX进程功能不能被RTEMS完全支持。这是因为RTEMS没有提供内存保护和实现单进程、多线程的执行模式。有鉴于此,RTEMS没有提供一个与创建新进程相关联的例程。然而,由于整个RTEMS应用程序(如可执行文件)逻辑上是单个POSIX进程,RTEMS能够提供在进程上的许多操作的实现。经验法则是那些例程提供有意义的结果。例如,getpid()返回节点号。

1.3  Operations
1.3  操作
The only functionality method defined by this manager which is supported by RTEMS is the _exit service. The implementation of _exit shuts the application down and is equivalent to invoking either exit or rtems_shutdown_executive.
由RTEMS支持的此管理器所定义的唯一功能性方法是_exit服务。_exit的实现关闭应用程序,相当于调用exit或rtems_shutdown_executive。

全文下载地址:http://download.csdn.net/detail/zhumaill/7019645

你可能感兴趣的:(RTEMS POSIX API 用户指南)