linux进程间通信

Size: px
Start display at page:

Download "linux进程间通信"

Transcription

1 linux 进程间通信 1. 进程间通信概述 2. 管道通信 3. 信号 4. 共享内存 5. 消息队列

2 1 进程间通信概述 进程间通信有如下一些目的 : 数据传输 : 一个进程需要将它的数据发送给另一个进程, 发送的数据量在一个字节到几兆字节之间 共享数据 : 多个进程想要操作共享数据, 一个进程对共享数据的修改, 别的进程应该立刻看到 通知事件 : 一个进程需要向另一个或一组进程发送消息, 通知它 ( 它们 ) 发生了某种事件 ( 如进程终止时要通知父进程 ) 资源共享 : 多个进程之间共享同样的资源 为了作到这一点, 需要内核提供锁和同步机制 进程控制 : 有些进程希望完全控制另一个进程的执行 ( 如 Debug 进程 ), 此时控制进程希望能够拦截另一个进程的所有陷入和异常, 并能够及时知道它的状态改变

3 linux 进程间通信 (IPC) 由以下几部分发展而来 : 早期 UNIX 进程间通信 基于 System V 进程间通信 基于 Socket 进程间通信和 POSIX 进程间通信 UNIX 进程间通信方式包括 : 管道 FIFO 信号 System V 进程间通信方式包括 :System V 消息队列 System V 信号灯 System V 共享内存 POSIX 进程间通信包括 :posix 消息队列 posix 信号灯 posix 共享内存

4 现在 linux 使用的进程间通信方式 : (1) 管道 (pipe) 和有名管道 (FIFO) (2) 信号 (signal) (3) 消息队列 (4) 共享内存 (5) 信号量 (6) 套接字 (socket)

5 2 管道通信 普通的 Linux shell 都允许重定向, 而重定向使用的就是管道 例如 : ps grep vsftpd 管道是单向的 先进先出的 无结构的 固定大小的字节流, 它把一个进程的标准输出和另一个进程的标准输入连接在一起 写进程在管道的尾端写入数据, 读进程在管道的首端读出数据 数据读出后将从管道中移走, 其它读进程都不能再读到这些数据 管道提供了简单的流控制机制 进程试图读空管道时, 在有数据写入管道前, 进程将一直阻塞 同样, 管道已经满时, 进程再试图写管道, 在其它进程从管道中移走数据之前, 写进程将一直阻塞 管道主要用于不同进程间通信

6 2.1 管道创建与关闭 创建一个简单的管道, 可以使用系统调用 pipe( ) 它接受一个参数, 也就是一个包括两个整数的数组 如果系统调用成功, 此数组将包括管道使用的两个文件描述符 创建一个管道之后, 一般情况下进程将产生一个新的进程 系统调用 :pipe( ); 原型 :int pipe( int fd[2] ); 返回值 : 如果系统调用成功, 返回 0 如果系统调用失败返回 -1: errno = EMFILE ( 没有空闲的文件描述符 ) EMFILE ( 系统文件表已满 ) EFAULT (fd 数组无效 )

7 注意 :fd[0] 用于读取管道,fd[1] 用于写入管道 图 1 linux 中管道与文件描述符的关系

8 #include <unistd.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> int main() { int pipe_fd[2]; if(pipe(pipe_fd)<0) { printf("pipe create error\n"); return -1; } else printf("pipe create success\n"); close(pipe_fd[0]); close(pipe_fd[1]); }

9 2.2 管道读写 管道主要用于不同进程间通信 实际上, 通常先创建一个管道, 再通过 fork 函数创建一个子进程 图 2 父子进程管道的文件描述符对应关系

10 父进程写入和子进程读的命名管道 : 图 3 关闭父进程 fd[1] 和子进程 [0]

11 2.3 管道读写注意事项 可以通过打开两个管道来创建一个双向的管道 但需要在子进程中正确地设置文件描述符 必须在系统调用 fork( ) 中调用 pipe( ), 否则子进程将不会继承文件描述符 当使用半双工管道时, 任何关联的进程都必须共享一个相关的祖先进程 因为管道存在于系统内核之中, 所以任何不在创建管道的进程的祖先进程之中的进程都将无法寻址它 而在命名管道中却不是这样 管道实例见 :pipe_rw.c

12 2.4 标准流管道 与 linux 中文件操作有文件流的标准 I/O 一样, 管道的操作也支持基于文件流的模式 接口函数如下 库函数 :popen(); 原型 : FILE *popen ( char *command, char *type); 返回值 : 如果成功, 返回一个新的文件流 如果无法创建进程或者管道, 返回 NULL 管道中数据流的方向是由第二个参数 type 控制的 此参数可以是 r 或者 w, 分别代表读或写 但不能同时为读和写 在 Linux 系统下, 管道将会以参数 type 中第一个字符代表的方式打开 所以, 如果你在参数 type 中写入 rw, 管道将会以读的方式打开

13 使用 popen() 创建的管道必须使用 pclose( ) 关闭 其实,popen/pclose 和标准文件输入 / 输出流中的 fopen() / fclose() 十分相似 库函数 : pclose(); 原型 : int pclose( FILE *stream ); 返回值 : 返回系统调用 wait4( ) 的状态 如果 stream 无效, 或者系统调用 wait4( ) 失败, 则返回 -1 注意此库函数等待管道进程运行结束, 然后关闭文件流 库函数 pclose( ) 在使用 popen( ) 创建的进程上执行 wait4( ) 函数 当它返回时, 它将破坏管道和文件系统

14 #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <fcntl.h> #define BUFSIZE 1024 int main() { FILE *fp; char *cmd = "ps -ef"; char buf[bufsize]; buf[bufsize] = '\0'; if((fp=popen(cmd,"r"))==null) perror("popen"); while((fgets(buf,bufsize,fp))!=null) printf("%s",buf); pclose(fp); exit(0); }

15 2.5 命名管道 (FIFO) 基本概念命名管道和一般的管道基本相同, 但也有一些显著的不同 : 命名管道是在文件系统中作为一个特殊的设备文件而存在的 不同祖先的进程之间可以通过管道共享数据 当共享管道的进程执行完所有的 I / O 操作以后, 命名管道将继续保存在文件系统中以便以后使用 管道只能由相关进程使用, 它们共同的祖先进程创建了管道 但是, 通过 FIFO, 不相关的进程也能交换数据

16 2.5.2 命名管道创建与操作 名管道创建 #include <sys/types.h> #include <sys/stat.h> int mkfifo(const char * pathname, mode_t mode) ; 返回 : 若成功则为 0, 若出错则为 -1 一旦已经用 mkfifo 创建了一个 FIFO, 就可用 open 打开它 确实, 一般的文件 I / O 函数 (close read write unlink 等 ) 都可用于 FIFO

17 当打开一个 FIFO 时, 非阻塞标志 (O_NONBLOCK) 产生下列影响 : (1) 在一般情况中 ( 没有说明 O_NONBLOCK), 只读打开要阻塞到某个其他进程为写打开此 FIFO 类似, 为写而打开一个 FIFO 要阻塞到某个其他进程为读而打开它 (2) 如果指定了 O_NONBLOCK, 则只读打开立即返回 但是, 如果没有进程已经为读而打开一个 FIFO, 那么只写打开将出错返回, 其 errno 是 ENXIO 类似于管道, 若写一个尚无进程为读而打开的 FIFO, 则产生信号 SIGPIPE 若某个 FIFO 的最后一个写进程关闭了该 FIFO, 则将为该 FIFO 的读进程产生一个文件结束标志

18 FIFO 相关出错信息 : EACCES ( 无存取权限 ) EEXIST ( 指定文件不存在 ) ENAMETOOLONG ( 路径名太长 ) ENOENT ( 包含的目录不存在 ) ENOSPC ( 文件系统剩余空间不足 ) ENOTDIR ( 文件路径无效 ) EROFS ( 指定的文件存在于只读文件系统中 ) 实例见 :fifo_write.c fifo_read.c

19 3 信号通信 3.1 信号概述信号是软件中断 信号 (signal) 机制是 Unix 系统中最为古老的进程之间的通信机制 它用于在一个或多个进程之间传递异步信号 很多条件可以产生一个信号 当用户按某些终端键时, 产生信号 在终端上按 DELETE 键通常产生中断信号 (SIGINT) 这是停止一个已失去控制程序的方法 硬件异常产生信号 : 除数为 0 无效的存储访问等等 这些条件通常由硬件检测到, 并将其通知内核 然后内核为该条件发生时正在运行的进程产生适当的信号 例如, 对执行一个无效存储访问的进程产生一个 SIGSEGV

20 进程用 kill( 2 ) 函数可将信号发送给另一个进程或进程组 自然, 有些限制 : 接收信号进程和发送信号进程的所有者必须相同, 或发送信号进程的所有者必须是超级用户 用户可用 kill( 1 ) 命令将信号发送给其他进程 此程序是 kill 函数的界面 常用此命令终止一个失控的后台进程 当检测到某种软件条件已经发生, 并将其通知有关进程时也产生信号 这里并不是指硬件产生条件 ( 如被 0 除 ), 而是软件条件 例如 SIGURG ( 在网络连接上传来非规定波特率的数据 ) SIGPIPE ( 在管道的读进程已终止后一个进程写此管道 ), 以及 SIGALRM( 进程所设置的闹钟时间已经超时 )

21 内核为进程生产信号, 来响应不同的事件, 这些事件就是信号源 主要的信号源如下 : 异常 : 进程运行过程中出现异常 ; 其它进程 : 一个进程可以向另一个或一组进程发送信号 ; 终端中断 :Ctrl-C,Ctrl-\ 等 ; 作业控制 : 前台 后台进程的管理 ; 分配额 :CPU 超时或文件大小突破限制 ; 通知 : 通知进程某事件发生, 如 I/O 就绪等 ; 报警 : 计时器到期

22 Linux 中的信号 : 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGIOT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

23 下面是几个常见的信号 SIGHUP: 从终端上发出的结束信号 ; SIGINT: 来自键盘的中断信号 (Ctrl-C); SIGQUIT: 来自键盘的退出信号 (Ctrl-\); SIGFPE: 浮点异常信号 ( 例如浮点运算溢出 ); SIGKILL: 该信号结束接收信号的进程 ; SIGALRM: 进程的定时器到期时, 发送该信号 ; SIGTERM:kill 命令发出的信号 ; SIGCHLD: 标识子进程停止或结束的信号 ; SIGSTOP: 来自键盘 (Ctrl-Z) 或调试程序的停止执行信号

24 可以要求系统在某个信号出现时按照下列三种方式中的一种进行操作 (1) 忽略此信号 大多数信号都可使用这种方式进行处理, 但有两种信号却决不能被忽略 它们是 : SIGKILL 和 SIGSTOP 这两种信号不能被忽略的原因是 : 它们向超级用户提供一种使进程终止或停止的可靠方法 另外, 如果忽略某些由硬件异常产生的信号 ( 例如非法存储访问或除以 0), 则进程的行为是未定义的 (2) 捕捉信号 为了做到这一点要通知内核在某种信号发生时, 调用一个用户函数 在用户函数中, 可执行用户希望对这种事件进行的处理 如果捕捉到 SIGCHLD 信号, 则表示子进程已经终止, 所以此信号的捕捉函数可以调用 waitpid 以取得该子进程的进程 ID 以及它的终止状态 (3) 执行系统默认动作 对大多数信号的系统默认动作是终止该进程

25 每一个信号都有一个缺省动作, 它是当进程没有给这个信号指定处理程序时, 内核对信号的处理 有 5 种缺省的动作 : 异常终止 (abort): 在进程的当前目录下, 把进程的地址空间内容 寄存器内容保存到一个叫做 core 的文件中, 而后终止进程 退出 (exit): 不产生 core 文件, 直接终止进程 忽略 (ignore): 忽略该信号 停止 (stop): 挂起该进程 继续 (continue): 如果进程被挂起, 则恢复进程的运行 否则, 忽略信号

26 3.2 信号发送与捕捉 kill() 和 raise() kill() 不仅可以中止进程, 也可以向进程发送其他信号 与 kill 函数不同的是,raise() 函数运行向进程自身发送信号 #include <sys/types.h> #include <signal.h> int kill(pid_t pid, int signo) ; int raise(int signo) ; 两个函数返回 : 若成功则为 0, 若出错则为 -1

27 kill 的 pid 参数有四种不同的情况 : pid>0 将信号发送给进程 ID 为 pid 的进程 pid == 0 将信号发送给其进程组 I D 等于发送进程的进程组 ID, 而且发送进程有许可权向其发送信号的所有进程 pid < 0 将信号发送给其进程组 ID 等于 pid 绝对值, 而且发送进程有许可权向其发送信号的所有进程 如上所述一样, 所有进程 并不包括系统进程集中的进程 pid ==-1 POSIX.1 未定义此种情况 kill() 实例见 :kill.c

28 3.2.2 alarm 和 pause 函数 使用 alarm 函数可以设置一个时间值 ( 闹钟时间 ), 在将来的某个时刻该时间值会被超过 当所设置的时间值被超过后, 产生 SIGALRM 信号 如果不忽略或不捕捉此信号, 则其默认动作是终止该进程 #include <unistd.h> unsigned int alarm(unsigned int seconds) ; 返回 :0 或以前设置的闹钟时间的余留秒数

29 参数 seconds 的值是秒数, 经过了指定的 seconds 秒后会产生信号 SIGALRM 每个进程只能有一个闹钟时间 如果在调用 alarm 时, 以前已为该进程设置过闹钟时间, 而且它还没有超时, 则该闹钟时间的余留值作为本次 alarm 函数调用的值返回 以前登记的闹钟时间则被新值代换 如果有以前登记的尚未超过的闹钟时间, 而且 seconds 值是 0, 则取消以前的闹钟时间, 其余留值仍作为函数的返回值

30 pause 函数使调用进程挂起直至捕捉到一个信号 #include <unistd.h> int pause(void); 返回 :-1,errno 设置为 EINTR 只有执行了一个信号处理程序并从其返回时,pause 才返回 实例见 :alarm.c

31 3.3 信号的处理 当系统捕捉到某个信号时, 可以忽略该信号或是使用指定的处理函数来处理该信号, 或者使用系统默认的方式 信号处理的主要方法有两种, 一种是使用简单的 signal 函数, 另一种是使用信号集函数组

32 3.3.1 signal() #include <signal.h> void (*signal (int signo, void (*func)(int)))(int) 返回 : 成功则为以前的信号处理配置, 若出错则为 SIG_ERR func 的值是 : (a) 常数 SIG_IGN, 或 (b) 常数 SIG_DFL, 或 (c) 当接到此信号后要调用的函数的地址 如果指定 SIG_IGN, 则向内核表示忽略此信号 ( 有两个信号 SIGKILL 和 SIGSTOP 不能忽略 ) 如果指定 SIG_DFL, 则表示接到此信号后的动作是系统默认动作 当指定函数地址时, 我们称此为捕捉此信号 我们称此函数为信号处理程序 (signal handler) 或信号捕捉函数 (signal-catching function)

33 signal 函数原型太复杂了, 如果使用下面的 typedef, 则可使其简化 typedef void sign(int); sign *signal(int, handler *); 实例见 :mysignal.c

34 3.3.2 信号集函数组 我们需要有一个能表示多个信号 信号集 (signal set) 的数据类型 将在 sigprocmask() 这样的函数中使用这种数据类型, 以告诉内核不允许发生该信号集中的信号 信号集函数组包含几大模块 : 创建函数集 登记信号集 检测信号集

35 定义信号集 Sigemptyset Sigaddset 设置信号屏蔽位 Sigprocmask 定义信号处理函数 sa_mask sa_handler sigaction 图 4 信号操作一般流程 Sigpending 测试信号

36 创建函数集 #include <signal.h> int sigemptyset(sigset_t * set) ; int sigfillset(sigset_t * set) ; int sigaddset(sigset_t * set,int signo) ; int sigdelset(sigset_t * set,int signo) ; 四个函数返回 : 若成功则为 0, 若出错则为 -1 int sigismember(const sigset_t * set, int signo) ; 返回 : 若真则为 1, 若假则为 0

37 sigemptyset: 初始化信号集合为空 sigfillset: 初始化信号集合为所有信号的集合 sigaddset: 将指定信号添加到现存集中 sigdelset: 从信号集中删除指定信号 sigismember: 查询指定信号是否在信号集合中

38 登记信号集 登记信号处理机主要用于决定进程如何处理信号 首先要判断出当前进程阻塞能不能传递给该信号的信号集 这首先使用 sigprocmask 函数判断检测或更改信号屏蔽字, 然后使用 sigaction 函数改变进程接受到特定信号之后的行为

39 一个进程的信号屏蔽字可以规定当前阻塞而不能递送给该进程的信号集 调用函数 sigprocmask 可以检测或更改 ( 或两者 ) 进程的信号屏蔽字 # include <signal.h> int sigprocmask(int how, const sigset_t * set, sigset_t * oset) ; 返回 : 若成功则为 0, 若出错则为 -1 oset 是非空指针, 进程的当前信号屏蔽字通过 oset 返回 其次, 若 set 是一个非空指针, 则参数 how 指示如何修改当前信号屏蔽字

40 用 sigprocmask 更改当前信号屏蔽字的方法, how 参数设定 : SIG_BLOCK 该该进程新的信号屏蔽字是其当前信号屏蔽字和 set 指向信号集的并集 set 包含了我们希望阻塞的附加信号 SIG_UNBLOCK 该该进程新的信号屏蔽字是其当前信号屏蔽字和 set 所指向信号集的交集 set 包含了我们希望解除阻塞的信号 SIG_SETMASK 该该进程新的信号屏蔽是 set 指向的值 如果 set 是个空指针, 则不改变该进程的信号屏蔽字, how 的值也无意义

41 sigaction 函数的功能是检查或修改 ( 或两者 ) 与指定信号相关联的处理动作 此函数取代了 UNIX 早期版本使用的 signal 函数 #include <signal.h> int sigaction(int signo, const struct sigaction * act,struct sigaction * oact) ; 返回 : 若成功则为 0, 若出错则为 -1 参数 signo 是要检测或修改具体动作的信号的编号数 若 act 指针非空, 则要修改其动作 如果 oact 指针非空, 则系统返回该信号的原先动作 此函数使用下列结构 : struct sigaction { } ; void (*sa_handler)(int signo); sigset_t sa_mask; int sa_flags; void (*sa_restore);

42 sa_handler 是一个函数指针, 指定信号关联函数, 可以是自定义处理函数, 还可以 SIG_DFL 或 SIG_IGN sa_mask 是一个信号集, 它可以指定在信号处理程序执行过程中哪些信号应当被阻塞 sa_flags 中包含许多标志位, 是对信号进行处理的各种选项 具体如下 : SA_NODEFER\SA_NOMASK: 当捕捉到此信号时, 在执行其信号捕捉函数时, 系统不会自动阻塞此信号 SA_NOCLDSTOP: 进程忽略子进程产生的任何 SIGSTOP SIGTSTP SIGTTIN 和 SIGTTOU 信号 SA_RESTART: 可让重启的系统调用重新起作用 SA_ONESHOT\SA_RESETHAND: 自定义信号只执行一次, 在执行完毕后恢复信号的系统默认动作

43 检测信号集 检测信号是信号处理的后续步骤, 但不是必须的 sigpending 函数运行进程检测 未决 信号 ( 进程不清楚他的存在 ), 并进一步决定对他们做何处理 sigpending 返回对于调用进程被阻塞不能递送和当前未决的信号集 #include <signal.h> int sigpending(sigset_t * set) ; 返回 : 若成功则为 0, 若出错则为 -1 信号集实例见 :sigaction.c

44 4 共享内存 共享内存区域是被多个进程共享的一部分物理内存 如果多个进程都把该内存区域映射到自己的虚拟地址空间, 则这些进程就都可以直接访问该共享内存区域, 从而可以通过该区域进行通信 共享内存是进程间共享数据的一种最快的方法, 一个进程向共享内存区域写入了数据, 共享这个内存区域的所有进程就可以立刻看到其中的内容

45 进程一 共享内存 进程二 图 5 共享内存原理示意图

46 共享内存实现分为两个步骤 : 一 创建共享内存, 使用 shmget 函数 二 映射共享内存, 将这段创建的共享内存映射到具体的进程空间去, 使用 shmat 函数

47 系统调用 :shmget( ) ; 原型 :int shmget ( key_t key, int size, int shmflg ); 返回值 : 如果成功, 返回共享内存段标识符 如果失败, 则返回 -1: errno = EINVAL ( 无效的内存段大小 ) EEXIST ( 内存段已经存在, 无法创建 ) EIDRM ( 内存段已经被删除 ) ENOENT ( 内存段不存在 ) EACCES ( 权限不够 ) ENOMEM ( 没有足够的内存来创建内存段 )

48 系统调用 :shmat(); 原型 :int shmat ( int shmid, char *shmaddr, int shmflg); 返回值 : 如果成功, 则返回共享内存段连接到进程中的地址 如果失败, 则返回 -1: errno = EINVAL ( 无效的 IPC ID 值或者无效的地址 ) ENOMEM ( 没有足够的内存 ) EACCES ( 存取权限不够 )

49 当一个进程不在需要共享的内存段时, 它将会把内存段从其地址空间中脱离 系统调用 :shmdt(); 调用原型 :int shmdt ( char *shmaddr ); 返回值 : 如果失败, 则返回 - 1: errno = EINVAL ( 无效的连接地址 ) 共享内存实例见 :shmadd.c

50 5. 消息队列 消息队列就是消息的一个链表, 它允许一个或多个进程向它写消息, 一个或多个进程从中读消息 具有一定的 FIFO 的特性, 但是可实现消息的随即查询 这些消息存在于内核中, 由 队列 ID 来标识 消息队列的实现包括创建和打开队列 添加消息 读取消息和控制消息队列这四种操作 msgget: 创建和打开队列, 其消息数量受系统限制 msgsnd: 添加消息, 将消息添加到消息队列尾部 msgrcv: 读取消息, 从消息队列中取走消息 msgctl: 控制消息队列

51 nt msgget (key_t key, int flag) key: 返回新的或已有队列的 ID,IPC_PRIVATE int msgsnd (int msqid, struct msgbuf *msgp, size_t msgsz, int flag) 其中 :msqid 是消息队列的队列 ID; msgp 是消息内容所在的缓冲区 ; msgsz 是消息的大小 ; msgflg 是标志,IPC_NOWAIT 若消息并没有立交发送而调用进程会立即返回

52 struct msgbuf { long mtype; /* type of message */ char mtext[1]; /* message text */ };

53 int msgrcv (int msqid, struct msgbuf *msgp, size_t msgsz,long msgtyp, int flag) msqid 是消息队列的引用标识符 ; msgp 是接收到的消息将要存放的缓冲区 ; msgsz 是消息的大小 ; msgtyp 是期望接收的消息类型 ; msgflg 是标志

54 int msgctl (int msqid, int cmd, struct msqid_ds *buf) msqid 是消息队列的引用标识符 ; cmd 是执行命令 ; buf 是一个缓冲区 cmd 参数指定对于由 msqid 规定的队列要执行的命令 : IPC_STAT 取此队列的 msqid_ds 结构, 并将其存放在 buf 指向的结构中 IPC_SET 按由 buf 指向的结构中的值, 设置与此队列相关的结构中的下列四个字段 : msg_perm.uid msg_perm.gid msg_perm;mode 和 msg_qbytes 此命令只能由下列两种进程执行: 一种是其有效用户 ID 等于 msg_perm.cuid 或 msg_perm.uid; 另一种是具有超级用户特权的进程 只有超级用户才能增加 msg_qbytes 的值 IPC_RMID 从系统中删除该消息队列以及仍在该队列上的所有数据 这种删除立即生效 仍在使用这一消息队列的其他进程在它们下一次试图对此队列进行操作时, 将出错返回 EIDRM 此命令只能由下列两种进程执行 : 一种是其有效用户 ID 等于 msg_perm.cuid 或 msg_perm.uid; 另一种是具有超级用户特权的进程

55 消息队列实例见 :msg.c

ebook15-10

ebook15-10 1 0 10.1 U N I X V 7 4. 3 B S D S V R 3 P O S I X. 1 100 % 10.2 S I G S I G A B RT a b o r t S I G A L R M a l a r m V 7 1 5 S V R 4 4. 3 + B S D 31 < s i g n a l. h > 0 10. 9 k i l l 0 P O S I X. 1 D

More information

IntelBook_cn.doc

IntelBook_cn.doc 3.3.3 信号 (Signal) 处理 信号 (signal) 是向进程发送的软件通知, 通知进程有事件发生 引发信号的事件发生时, 信号就被生成 (generate) 了 进程根据信号采取行动时, 信号就被传递 (deliver) 了 信号的寿命 (lifetime) 就是信号的生成和传递之间的时间间隔 已经生成但还未被传递的信号被称为挂起 (pending) 的信号 在信号生成和信号传递之间可能会有相当长的时间

More information

第6章 信号量,中断和时间

第6章  信号量,中断和时间 6 6 Signal IPC POSIX Unix IPC Ctrl+C 9 IPC Linux Interrupt 5 Linux Linux CPU Linux Linux include/asm-i386/spinlock.h 12582 #ifdef UP SMP UP SMP 10 SMP Linux Nonrealtime SIGSEGVSIGHUP - - 52 6 SIGKILL realtime

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

多进程管理副本.key

多进程管理副本.key 美妙的多进程管理 造 个类 gunicorn 的轮 blog: xiaorui.cc github: github.com/rfyiamcool 内容 supervisor vs gunicorn vs uwsgi linux 异步信号 孤 进程 vs 僵 进程 daemon 的实现 prefork 是怎么 回事 打造 个较完善的多进程管理轮 怎么写代码 Master Worker elegance

More information

<4D6963726F736F667420576F7264202D204C696E7578CFB5CDB3B5F7D3C3C1D0B1ED>

<4D6963726F736F667420576F7264202D204C696E7578CFB5CDB3B5F7D3C3C1D0B1ED> Linux 系 统 调 用 列 表 雷 镇 (leicool@21cn.com) http://www.ibm.com/developerworks/cn/linux/kernel/syscall/part1/appendix.html ( 王 伟 注 : 本 文 是 从 作 者 的 博 文 上 拷 贝 来 的, 进 行 了 重 排 版 ) 简 介 : 本 文 列 出 了 大 部 分 常 见 的 Linux

More information

ebook15-C

ebook15-C C 1 1.1 l s ( 1 ) - i i 4. 14 - d $ l s -ldi /etc/. /etc/.. - i i 3077 drwxr-sr-x 7 bin 2048 Aug 5 20:12 /etc/./ 2 drwxr-xr-x 13 root 512 Aug 5 20:11 /etc/../ $ls -ldi /. /..... i 2 2 drwxr-xr-x 13 root

More information

上 述 的 描 述 是 在 一 台 计 算 机 上 只 有 一 颗 CPU, 并 且 该 CPU 只 有 一 个 核 心 的 情 形, 在 这 种 环 境 下, 虽 然 系 统 可 以 运 行 多 个 任 务, 但 是 在 某 一 个 时 间 点,CPU 只 能 执 行 一 个 进 程 但 是 如

上 述 的 描 述 是 在 一 台 计 算 机 上 只 有 一 颗 CPU, 并 且 该 CPU 只 有 一 个 核 心 的 情 形, 在 这 种 环 境 下, 虽 然 系 统 可 以 运 行 多 个 任 务, 但 是 在 某 一 个 时 间 点,CPU 只 能 执 行 一 个 进 程 但 是 如 Linux 操 作 系 统 第 五 讲 : 进 程 管 理 学 时 计 划 :4 学 时 理 论,0 学 时 实 验 ( 无 实 验 教 学 内 容 ) 教 学 大 纲 : 1 进 程 2 进 程 的 监 控 3 进 程 管 理 4 /PROC 文 件 系 统 5 讨 论 与 思 考 Linux 的 进 程 管 理 与 UNIX 操 作 系 统 有 着 很 多 共 同 点, 但 也 有 一 些 独

More information

Microsoft Word - 第8章 进程间通信.doc

Microsoft Word - 第8章 进程间通信.doc 第 8 章进程间通信 学习目标 u 了解进程间通信的常用方式 u 掌握使用管道实现进程间通信的方法 u 掌握使用消息队列实现进程间通信的方法 u 掌握使用信号量实现进程间通信的方法 u 掌握使用共享内存实现进程间通信的方法 一项用户请求通常需要多个进程协同完成, 当遇到这种情况时, 进程需要与其它进程进行交互, 但每个进程的用户地址空间和打开的文件描述符都是独立的, 这就意味着进程无法直接访问其它进程中的数据或打开的文件

More information

46 * the current mask in old_mask and block until a signal comes in. 47 */ /* 自动地更换成新的信号屏蔽码, 并等待信号的到来 * * 我们需要对系统调用 (syscall) 做一些处理 我们会从系统调用库接口取得某些信息

46 * the current mask in old_mask and block until a signal comes in. 47 */ /* 自动地更换成新的信号屏蔽码, 并等待信号的到来 * * 我们需要对系统调用 (syscall) 做一些处理 我们会从系统调用库接口取得某些信息 程序 8-6 linux/kernel/signal.c 1 /* 2 * linux/kernel/signal.c 3 * 4 * (C) 1991 Linus Torvalds 5 */ 6 7 #include // 调度程序头文件, 定义任务结构 task_struct 初始任务 0 的数据, // 还有一些有关描述符参数设置和获取的嵌入式汇编函数宏语句 8

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

文件

文件 CH10 文件 1 文件的概念 一 文件分类 二 文件的组织结构 : ASCII 码文件 ( 文本文件 ) 二进制文件 文件是二进制代码的, 则文件就是字节流 文件是 ASCII 码的, 则文件就是字符流, 也是字节流 1 如 : 对于整型变量 x, 其值为 32767 若以文本方式存放, 则共有 5 个字符, 内容为 : 00110011 00110010 00110111 00110110 00110111

More information

华恒家庭网关方案

华恒家庭网关方案 LINUX V1.5 1 2 1 2 LINUX WINDOWS PC VC LINUX WINDOWS LINUX 90% GUI LINUX C 3 REDHAT 9 LINUX PC TFTP/NFS http://www.hhcn.com/chinese/embedlinux-res.html minicom NFS mount C HHARM9-EDU 1 LINUX HHARM9-EDU

More information

目录

目录 ...1 1.1...1 1.2 OSI...3 1.3 Internet...4 1.4 /...5 1.4 UNIX...7 1.4.1 Unix...7 1.4.2 UNIX...8 1.4.3 1979 UNIX... 10 1.4.4 UNIX?... 11 1.5 Linux... 11 1.5.1 Linux... 12 1.5.2 GNU... 12 1.5.3 Linux... 13

More information

,,.,. :, :,1999. Barry Wilkinson and Michael Allen. Parallel Programming(Techniques and Applications using Networked Workstations and Parallel

,,.,. :, :,1999. Barry Wilkinson and Michael Allen. Parallel Programming(Techniques and Applications using Networked Workstations and Parallel Parallel Programming: Fundamentals and Implementation czn@ncic ncic.ac..ac.cncn ( ) 2003.9 2003 9 1/143 ,,.,. :, 2000... :,1999. Barry Wilkinson and Michael Allen. Parallel Programming(Techniques and Applications

More information

epub 33-8

epub 33-8 8 1) 2) 3) A S C I I 4 C I / O I / 8.1 8.1.1 1. ANSI C F I L E s t d i o. h typedef struct i n t _ f d ; i n t _ c l e f t ; i n t _ m o d e ; c h a r *_ n e x t ; char *_buff; /* /* /* /* /* 1 5 4 C FILE

More information

ebook

ebook 3 3 3.1 3.1.1 ( ) 90 3 1966 B e r n s t e i n P ( i ) R ( i ) W ( i P ( i P ( j ) 1) R( i) W( j)=φ 2) W( i) R( j)=φ 3) W( i) W( j)=φ 3.1.2 ( p r o c e s s ) 91 Wi n d o w s Process Control Bl o c k P C

More information

static struct file_operations gpio_ctl_fops={ ioctl: gpio_ctl_ioctl, open : gpio_open, release: gpio_release, ; #defineled1_on() (GPBDAT &= ~0x1) #def

static struct file_operations gpio_ctl_fops={ ioctl: gpio_ctl_ioctl, open : gpio_open, release: gpio_release, ; #defineled1_on() (GPBDAT &= ~0x1) #def Kaise s 2410 Board setting [1]. Device Driver Device Driver Linux s Kernel ARM s kernel s3c2410_kernel2.4.18_r1.1_change.tar.bz2 /usr/src (1) #cd /usr/src (2) #tar xfj s3c2410_kernel2.4.18_r1.1_change.tar.bz2

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

ebook15-4

ebook15-4 4 4.1 I / O I / s t a t s t a t ( ) U N I X 4.2 stat fstat lstat s t a t #include #include int stat(const char p a * t h n a m e, struct stat b * u f) ; int fstat(int f i l e

More information

谨将我们的工作献给 即将毕业离校的兄弟们 林晓鑫 刘德超 黄巍 周蓝珺 胡禹轩 王新喜 何春晓 崔剑 李浩 以及 潘海东即将出世的小 Baby! II

谨将我们的工作献给 即将毕业离校的兄弟们 林晓鑫 刘德超 黄巍 周蓝珺 胡禹轩 王新喜 何春晓 崔剑 李浩 以及 潘海东即将出世的小 Baby! II 谨将我们的工作献给 即将毕业离校的兄弟们 林晓鑫 刘德超 黄巍 周蓝珺 胡禹轩 王新喜 何春晓 崔剑 李浩 以及 潘海东即将出世的小 Baby! II 0 译者序 Linux System Prorgramming ( LSP) 的 文 工作 实 工业 IBM 理 的 工作的同 的 同 们 林晓鑫 王 崔 春 何春晓 李 的 SMS@lilacbbs.com 文献 的 王 刘文 王 刘德超 王新喜

More information

第11章 可调内核参数

第11章 可调内核参数 11 11 Unix BSD 4.4 Linux sysctl Unix Linux /proc window /proc /proc/sys /proc/sys sysctl Unix root /proc/sys/vm root /proc/sys sysctl /proc/sys struct ctl_table 18274 struct ctl_tables /proc/sys struct

More information

W. Richard Stevens UNIX Sockets API echo Sockets TCP OOB IO C struct C/C++ UNIX fork() select(2)/poll(2)/epoll(4) IO IO CPU 100% libevent UNIX CPU IO

W. Richard Stevens UNIX Sockets API echo Sockets TCP OOB IO C struct C/C++ UNIX fork() select(2)/poll(2)/epoll(4) IO IO CPU 100% libevent UNIX CPU IO Linux muduo C++ (giantchen@gmail.com) 2012-09-30 C++ TCP C++ x86-64 Linux TCP one loop per thread Linux native muduo C++ IT 5 C++ muduo 2 C++ C++ Primer 4 W. Richard Stevens UNIX Sockets API echo Sockets

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

第一章 概论

第一章  概论 1 2 3 4 5 6 7 8 Linux 7.1 7.1.1 1 1 2 3 2 3 1 2 3 3 1 2 3 7.1.2 1 2 1 2 3 4 5 7.1.3 1 1 2 3 2 7.1 3 7.1.4 1 1 PCB 2 3 2 PCB PCB PCB PCB PCB 4 1 2 PSW 3 CPU CPU 4 PCB PCB CPU PCB PCB PCB PCB PCB PCB PCB

More information

untitled

untitled 3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

Microsoft PowerPoint - os_4.ppt

Microsoft PowerPoint - os_4.ppt 行 程 資 科 系 林 偉 川 行 程 概 念 行 程 與 程 式 主 要 的 不 同 點 : 程 式 是 被 放 在 外 部 的 儲 存 裝 置 如 磁 碟 上, 而 行 程 則 被 放 在 記 憶 體 中 程 式 在 儲 存 裝 置 中 是 靜 態 的, 而 行 程 在 記 憶 體 中 是 動 態 的, 它 會 隨 著 一 些 事 件 的 發 生 而 產 生 相 對 的 改 變 行 程, 就 是

More information

How to Debug Tuxedo Server printf( Input data is: %s, inputstr); fprintf(stdout, Input data is %s, inputstr); fprintf(stderr, Input data is %s, inputstr); printf( Return data is: %s, outputstr); tpreturn(tpsuccess,

More information

提纲 1 2 OS Examples for 3

提纲 1 2 OS Examples for 3 第 4 章 Threads2( 线程 2) 中国科学技术大学计算机学院 October 28, 2009 提纲 1 2 OS Examples for 3 Outline 1 2 OS Examples for 3 Windows XP Threads I An Windows XP application runs as a seperate process, and each process may

More information

C

C C 14 2017 5 31 1. 2. 3. 4. 5. 2/101 C 1. ( ) 4/101 C C ASCII ASCII ASCII 5/101 C 10000 00100111 00010000 ASCII 10000 31H 30H 30H 30H 30H 1 0 0 0 0 0 ASCII 6/101 C 7/101 C ( ) ( ) 8/101 C UNIX ANSI C 9/101

More information

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0 SDChain-Matrix 节点搭建指南 目录 1 环境要求... 3 2 软件下载... 4 3 安装部署... 4 3.1 部署可执行程序目录... 4 3.2 部署配置文件目录... 4 3.3 部署数据库文件目录... 4 3.4 部署日志文件目录... 4 3.5 部署依赖库文件目录... 4 4 配置参数... 5 5 启动运行... 7 5.1 普通模式启动... 7 5.2 加载启动模式...

More information

ebook35-21

ebook35-21 21 Linux L i n u x 211 U N I X U N I X I / O F I F O U N I X I n t e r n e t s o c k e t () s o c k e t () send() r e c v ( read() w r i t e () send() r e c v () I n t e r n e t 212 Internet Internet S

More information

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1 21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414

More information

ebook15-12

ebook15-12 1 2I / O 12.1 I / O V I / O s e l e c tp o l l r e a d vw r i t e v I / Om m a p 14 15 12.2 I / O 1 0. 5 F I F O F I F O i o c t l 14 I / O I / o p e n, r e a dw r i t e I / O (1) o p e n O _ N O N B L

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

ebook15-2

ebook15-2 2 U N I X 2.1 U N I X C U N I X U N I X 80 U N I X ( ) U N I X 2.2 UNIX 2.2.1 ANSI C 1989 C A N S I X 3. 159-1989 ANSI 1989 ISO/IEC 9899:1990 A N S I ( I S O ) ANSI C C UN I X C ANSI 1989 4 Plauger 1992;Kernighan

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

技 术 文 件

技  术  文  件 技术文件 技术文件名称 :IAlert 接口使用说明 技术文件编号 : 版 本 :V1.0 共页 ( 包括封面 ) 拟制 审核 会签 标准化 批准 中兴通讯股份有限公司 XX 软件模块详细设计说明 版本号 修改记录 文件编号 版本号 拟制人 / 修改人 拟制 / 修改日期 1 V1.0 胡曦 2005-08-12 新建 更改理由 主要更改内容 ( 写要点即可 ) 注 1: 每次更改归档文件 ( 指归档到事业部或公司档案室的文件

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

专题一.ppt

专题一.ppt Android 核心入门分析 Jack.fan Copyright 2007-2008 Farsight. All rights reserved. 主要内容 : } 1 android 系统启动流程分析 } 2 android 系统 JNI 和 Binder 使用简介 } 3 android 系统输入子系统模型分析 1.1 android 系统启动流程分析 : } 1). } init 进程启动控制台进程

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

_汪_文前新ok[3.1].doc

_汪_文前新ok[3.1].doc 普 通 高 校 本 科 计 算 机 专 业 特 色 教 材 精 选 四 川 大 学 计 算 机 学 院 国 家 示 范 性 软 件 学 院 精 品 课 程 基 金 青 年 基 金 资 助 项 目 C 语 言 程 序 设 计 (C99 版 ) 陈 良 银 游 洪 跃 李 旭 伟 主 编 李 志 蜀 唐 宁 九 李 涛 主 审 清 华 大 学 出 版 社 北 京 i 内 容 简 介 本 教 材 面 向

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

提纲 1 Process Scheduling Process Scheduling Queues Schedulers Context Switch( 上下文切换 ) 2 Operation on processes Process Creation Process Termination 3 I

提纲 1 Process Scheduling Process Scheduling Queues Schedulers Context Switch( 上下文切换 ) 2 Operation on processes Process Creation Process Termination 3 I 操作系统原理与设计 第 3 章 Processes( 进程 )2 陈香兰 中国科学技术大学计算机学院 March 19, 2014 陈香兰 ( 中国科学技术大学计算机学院 ) 操作系统原理与设计 March 19, 2014 1 / 50 提纲 1 Process Scheduling Process Scheduling Queues Schedulers Context Switch( 上下文切换

More information

untitled

untitled 1 DBF (READDBF.C)... 1 2 (filetest.c)...2 3 (mousetes.c)...3 4 (painttes.c)...5 5 (dirtest.c)...9 6 (list.c)...9 1 dbf (readdbf.c) /* dbf */ #include int rf,k,reclen,addr,*p1; long brec,erec,i,j,recnum,*p2;

More information

C语言的应用.PDF

C语言的应用.PDF AVR C 9 1 AVR C IAR C, *.HEX, C,,! C, > 9.1 AVR C MCU,, AVR?! IAR AVR / IAR 32 ALU 1KBytes - 8MBytes (SPM ) 16 MBytes C C *var1, *var2; *var1++ = *--var2; AVR C 9 2 LD R16,-X ST Z+,R16 Auto (local

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc 2 5 8 11 0 1. 13 2. 15 3. 18 1 1. 22 2. 25 3. 27 2 1. 35 2. 38 3. 41 4. 43 5. 48 6. 50 3 1. 56 2. 59 3. 63 4. 65 5. 69 13 22 35 56 6. 74 7. 82 8. 84 9. 87 10. 97 11. 102 12. 107 13. 111 4 114 1. 114 2.

More information

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf (%d, & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9 201 201 21 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 1 B 1 C 5 D RPG 10 E 10 F 1 G II 1 1 201 201 C 1 # include 2 int main ( void

More information

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf (%d, & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf (%d %d 2013 18 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp, Compilation Error cin scanf Time Limit Exceeded 1: A 5 B 5 C 5 D 5 E 5 F 5 1 2013 C 1 # include 2 int main ( void ) 3 { 4 int cases, a, b,

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3 浙江大学 C 程序设计及实验 试题卷 2002-2003 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:30-10:30 注意 : 答题内容必须写在答题卷上, 写在本试题卷上无效 一. 单项选择题 ( 每题 1 分, 共 10 分 ) 1. 下列运算符中, 优先级最低的是 A.

More information

嵌入式Linux开发课程

嵌入式Linux开发课程 嵌入式 Linux 开发课程 ( 应用程序 ) 主讲人 : David.T 课程安排 1. 初识 Linux 环境下的编程 2. Linux 下的磁盘和文件 I/O 操作 3. 流式文件操作 4. 字符串操作回顾 ( 一 ) 初识 Linux 环境下的编程 1. 你的第一个程序 :Helloworld vi helloworld.c #include int main() { printf(

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p NOWOER.OM /++ 程师能 评估. 单项选择题 1. 下 描述正确的是 int *p1 = new int[10]; int *p2 = new int[10](); p1 和 p2 申请的空间 的值都是随机值 p1 和 p2 申请的空间 的值都已经初始化 p1 申请的空间 的值是随机值,p2 申请的空间 的值已经初始化 p1 申请的空间 的值已经初始化,p2 申请的空间 的值是随机值 2.

More information

untitled

untitled Lwip Swedish Institute of Computer Science February 20, 2001 Adam Dunkels adam@sics.se (QQ: 10205001) (QQ: 329147) (QQ:3232253) (QQ:3232253) QQ ARM TCPIP LCD10988210 LWIP TCP/IP LWIP LWIP lwip API lwip

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

通过Hive将数据写入到ElasticSearch

通过Hive将数据写入到ElasticSearch 我在 使用 Hive 读取 ElasticSearch 中的数据 文章中介绍了如何使用 Hive 读取 ElasticSearch 中的数据, 本文将接着上文继续介绍如何使用 Hive 将数据写入到 ElasticSearch 中 在使用前同样需要加入 elasticsearch-hadoop-2.3.4.jar 依赖, 具体请参见前文介绍 我们先在 Hive 里面建个名为 iteblog 的表,

More information

nooog

nooog C : : : , C C,,, C, C,, C ( ), ( ) C,,, ;,, ; C,,, ;, ;, ;, ;,,,, ;,,, ; : 1 9, 2 3, 4, 5, 6 10 11, 7 8, 12 13,,,,, 2008 1 1 (1 ) 1.1 (1 ) 1.1.1 ( ) 1.1.2 ( ) 1.1.3 ( ) 1.1.4 ( ) 1.1.5 ( ) 1.2 ( ) 1.2.1

More information

《C语言程序设计》第2版教材习题参考答案

《C语言程序设计》第2版教材习题参考答案 教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

Microsoft Word - MAN2011A_CH_RTT.doc

Microsoft Word - MAN2011A_CH_RTT.doc 基于 SAM7X EK 和 IAR EWARM 文档编号 文档版本 Rev. A 文档摘要 基于 AT91SAM7X EK 开发板的代码解读,RTT 代码解读 关键词 AT91SAM7X256 SAM7X EK IAR EWARM J LINK RTT 创建日期 2010 06 08 创建人员 Cust126 审核人员 Robin 文档类型 公开发布 / 开发板配套文件 版权信息 Mcuzone 原创文档,

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

TD

TD *TD-000212-05* 20- 应用实例 4 本例显示的是使用两个亚低 音扬声器和多个顶箱的双声 道 立体声 设置 除了各声道都增加了一个顶 箱外 也可以增加更多的顶 箱 本例和例 3 的情况一 致 声道 2 或 右声道 声道 1 或 左声道 要接到更多的顶箱 将最后 一个顶箱的全幅线路输出接 头处的线缆接到下一个顶箱 的全幅线路输入接头 在不 降低信号质量的情况下 最

More information

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式] 指针 Pointers 变量指针与指针变量 Pointer of a variable 变量与内存 (Variables and Memory) 当你声明一个变量时, 计算机将给该变量一个内存, 可以存储变量的值 当你使用变量时, 计算机将做两步操作 : - 根据变量名查找其对应的地址 ; - 通过地址对该地址的变量内容进行读 (retrieve) 或写 (set) 变量的地址称为变量的指针! C++

More information

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha CYPOK CYPOK 1 UltraEdit Project-->Install Language Tool: Language Suite----->hi-tech picc Tool Name ---->PICC Compiler Executable ---->c:hi-picinpicc.exe ( Command-line Project-->New Project-->File Name--->myc

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 9 [P.11] : Dev C++ [P.12] : http://c.feis.tw [P.13] [P.14] [P.15] [P.17] [P.23] Dev C++ [P.24] [P.27] [P.34] C / C++ [P.35] 10 C / C++ C C++ C C++ C++ C ( ) C++

More information

附錄C.doc

附錄C.doc C C C-1 C -2 C -3 C -4 C -5 / C -6 2 C/C++ C-1 FILE* fopen(const char* filename, const char* mode) filename NULL FILE* freopen(const

More information

没有幻灯片标题

没有幻灯片标题 指针作为函数参数 : 原因 : 1 需要修改一个或多个值,( 用 return 语句不能解决问题 ) 2 执行效率的角度 使用方法 : 在函数原型以及函数首部中需要声明能够接受指针值的形参, 具体的写法为 : 数据类型 * 形参名 如果有多个指针型形参, 则用逗号分隔, 例如 : void swap(int *p1, int *p2) 它说明了形参 p1 p2 是指向整型变量的指针 在函数调用时,

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

普 通 高 等 教 育 十 二 五 重 点 规 划 教 材 计 算 机 系 列 中 国 科 学 院 教 材 建 设 专 家 委 员 会 十 二 五 规 划 教 材 操 作 系 统 戴 仕 明 姚 昌 顺 主 编 姜 华 张 希 伟 副 主 编 郑 尚 志 梁 宝 华 参 编 参 编 周 进 钱 进

普 通 高 等 教 育 十 二 五 重 点 规 划 教 材 计 算 机 系 列 中 国 科 学 院 教 材 建 设 专 家 委 员 会 十 二 五 规 划 教 材 操 作 系 统 戴 仕 明 姚 昌 顺 主 编 姜 华 张 希 伟 副 主 编 郑 尚 志 梁 宝 华 参 编 参 编 周 进 钱 进 科 学 出 版 社 普 通 高 等 教 育 十 二 五 重 点 规 划 教 材 计 算 机 系 列 中 国 科 学 院 教 材 建 设 专 家 委 员 会 十 二 五 规 划 教 材 操 作 系 统 戴 仕 明 姚 昌 顺 主 编 姜 华 张 希 伟 副 主 编 郑 尚 志 梁 宝 华 参 编 参 编 周 进 钱 进 参 编 北 京 内 容 简 介 本 书 由 浅 入 深 系 统 全 面 地 介 绍

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

表3:

表3: 1. 面 向 对 象 程 序 设 计 课 程 教 学 大 纲 2. 面 向 对 象 程 序 设 计 实 验 教 学 大 纲 3. 离 散 数 学 课 程 教 学 大 纲 4. 数 据 结 构 课 程 教 学 大 纲 5. 数 据 结 构 实 验 教 学 大 纲 6. 计 算 机 组 成 原 理 课 程 教 学 大 纲 7. 操 作 系 统 课 程 教 学 大 纲 8. 操 作 系 统 实 验 教 学

More information

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023) ( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.

More information

第 14 行调用 of_demo_controller_register 注册 demo controller 驱动,xlate 函数设置的都是 of_demo_simple_xlate, 这个函数完成对 user 传来的参数的处理 1. int of_demo_controller_registe

第 14 行调用 of_demo_controller_register 注册 demo controller 驱动,xlate 函数设置的都是 of_demo_simple_xlate, 这个函数完成对 user 传来的参数的处理 1. int of_demo_controller_registe 作者 彭东林 pengdonglin137@163.com 平台 TQ2440 Linux 4.10.17 概述 上一篇大概介绍了一下 demo controller 的结构, 下面结合驱动分析 正文 一 demo controller 驱动 这里主要分析 probe 函数 demo_controller_probe: 1. static int demo_controller_probe(struct

More information

嵌入式Linux块设备驱动开发解析

嵌入式Linux块设备驱动开发解析 The success's road 嵌 入 式 LINUX 网 络 驱 动 开 发 Copyright 2007-2008 Farsight. All rights reserved. 要 点 Linux 网 络 设 备 驱 动 程 序 概 述 计 算 机 网 络 概 述 skbuf 数 据 结 构 介 绍 Linux 网 络 设 备 驱 动 程 序 API 介 绍 Linux 网 络 设 备 驱

More information

静态分析 投放文件 行为分析 互斥量 (Mutexes) 执行的命令 创建的服务 启动的服务 进程 cmd.exe PID: 2520, 上一级进程 PID: 2556 cmd.exe PID: 2604, 上一级进程 PID: 2520 访问的文件 C:\Users\test\AppData\Lo

静态分析 投放文件 行为分析 互斥量 (Mutexes) 执行的命令 创建的服务 启动的服务 进程 cmd.exe PID: 2520, 上一级进程 PID: 2556 cmd.exe PID: 2604, 上一级进程 PID: 2520 访问的文件 C:\Users\test\AppData\Lo 魔盾安全分析报告 分析类型 开始时间 结束时间 持续时间 分析引擎版本 FILE 2016-11-25 00:20:03 2016-11-25 00:22:18 135 秒 1.4-Maldun 虚拟机机器名 标签 虚拟机管理 开机时间 关机时间 win7-sp1-x64 win7-sp1-x64 KVM 2016-11-25 00:20:03 2016-11-25 00:22:18 魔盾分数 0.0

More information

10 系统级 I/O 2017 年 4 月 5 日 9: 输入 / 输出 (I/O) 是在主存和外部设备之间拷贝数据的过程 输入是从 I/O 设备拷贝数据到主存, 输出是从主存拷贝数据到 I/O 设备 了解 I/O 的好处 : a. 帮助理解其它的系统概念 ; b. 有时候除了使用

10 系统级 I/O 2017 年 4 月 5 日 9: 输入 / 输出 (I/O) 是在主存和外部设备之间拷贝数据的过程 输入是从 I/O 设备拷贝数据到主存, 输出是从主存拷贝数据到 I/O 设备 了解 I/O 的好处 : a. 帮助理解其它的系统概念 ; b. 有时候除了使用 10 系统级 I/O 2017 年 4 月 5 日 9:20 2. 输入 / 输出 (I/O) 是在主存和外部设备之间拷贝数据的过程 输入是从 I/O 设备拷贝数据到主存, 输出是从主存拷贝数据到 I/O 设备 了解 I/O 的好处 : a. 帮助理解其它的系统概念 ; b. 有时候除了使用 Unix I/O 别无选择 分区 深入理解计算机系统 笔记的第 1 页 10.1 Unix I/O 2017

More information

untitled

untitled MODBUS 1 MODBUS...1 1...4 1.1...4 1.2...4 1.3...4 1.4... 2...5 2.1...5 2.2...5 3...6 3.1 OPENSERIAL...6 3.2 CLOSESERIAL...8 3.3 RDMULTIBIT...8 3.4 RDMULTIWORD...9 3.5 WRTONEBIT...11 3.6 WRTONEWORD...12

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

全国计算机技术与软件专业技术资格(水平)考试

全国计算机技术与软件专业技术资格(水平)考试 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明

More information

INTRODUCTION TO COM.DOC

INTRODUCTION TO COM.DOC How About COM & ActiveX Control With Visual C++ 6.0 Author: Curtis CHOU mahler@ms16.hinet.net This document can be freely release and distribute without modify. ACTIVEX CONTROLS... 3 ACTIVEX... 3 MFC ACTIVEX

More information

1. SDK 概述 Arcsoft Photo Styling SDK 可以将输入图像转化为具有指定风格的图像 图像风格主要是指色调 笔触 线条等图像的特异性表现形式 存储某一艺术图像风格模板的文件将按需要发布给 SDK 使用者 借助 SDK 和风格模板文件, 用户可以开发图像风格化等图像美化类应用

1. SDK 概述 Arcsoft Photo Styling SDK 可以将输入图像转化为具有指定风格的图像 图像风格主要是指色调 笔触 线条等图像的特异性表现形式 存储某一艺术图像风格模板的文件将按需要发布给 SDK 使用者 借助 SDK 和风格模板文件, 用户可以开发图像风格化等图像美化类应用 Arcsoft Photo Styling SDK 开发文档 目录 Arcsoft Photo Styling SDK 开发文档... 1 1. SDK 概述... 2 2. SDK 运行环境及相关指标... 2 2.1 运行环境... 2 2.2 运行指标... 3 3. API 说明... 3 3.1 函数... 3 APS_FSDK_Get_Version... 3 APS_FSDK_InitEngine...

More information

untitled

untitled 1 5 IBM Intel 1. IBM 第 1/175 页 第 2/175 页 第 3/175 页 80 第 4/175 页 2. IBM 第 5/175 页 3. (1) 第 6/175 页 第 7/175 页 第 8/175 页 = = 第 9/175 页 = = = = = 第 10/175 页 = = = = = = = = 3. (2) 第 11/175 页 第 12/175 页 第 13/175

More information

Microsoft Word - AN3259C

Microsoft Word - AN3259C www.maxim-ic.com.cn 应用笔记 3259 DS31256 Envoy - 寄存器转储列程 概述本应用笔记提供了将 DS31256 的寄存器 排队程序 描述符和 FIFO RAM 的内容转储到一个文件的程序代码 这些数据在 DS31256 无法正常工作时非常关键, 为进一步的研究和调试提供了重要信息 例如, 寄存器数据经过转储后可以显示每个 DS31256 寄存器的设置 为了保证正确地设置器件,

More information

考 試 日 期 :2016/04/24 教 室 名 稱 :602 電 腦 教 室 考 試 時 間 :09:50 25 26 27 28 29 30 31 32 33 34 35 36 二 技 企 管 一 胡 宗 兒 中 文 輸 入 四 技 企 四 甲 林 姿 瑄 中 文 輸 入 二 技 企 管 一

考 試 日 期 :2016/04/24 教 室 名 稱 :602 電 腦 教 室 考 試 時 間 :09:50 25 26 27 28 29 30 31 32 33 34 35 36 二 技 企 管 一 胡 宗 兒 中 文 輸 入 四 技 企 四 甲 林 姿 瑄 中 文 輸 入 二 技 企 管 一 考 試 日 期 :2016/04/24 教 室 名 稱 :602 電 腦 教 室 考 試 時 間 :09:50 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 五 專 企 二 乙 胡 哲 維 中 文 輸 入 五 專 企 二 乙 周 林 昜 中 文 輸 入 五 專 企 二 乙 賴 昱 樺 中 文 輸 入 五 專 企 二 乙

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

提问袁小兵:

提问袁小兵: C++ 面 试 试 题 汇 总 柯 贤 富 管 理 软 件 需 求 分 析 篇 1. STL 类 模 板 标 准 库 中 容 器 和 算 法 这 部 分 一 般 称 为 标 准 模 板 库 2. 为 什 么 定 义 虚 的 析 构 函 数? 避 免 内 存 问 题, 当 你 可 能 通 过 基 类 指 针 删 除 派 生 类 对 象 时 必 须 保 证 基 类 析 构 函 数 为 虚 函 数 3.

More information

linux操作系统下c语言编程入门

linux操作系统下c语言编程入门 linux 操 作 系 统 下 c 语 言 编 程 入 门 ( 一 ) 目 录 介 绍 linux 操 作 系 统 下 c 语 言 编 程 入 门...1 ( 一 ) 目 录 介 绍...1 ( 二 ) 具 体 内 容...1 1)Linux 程 序 设 计 入 门 -- 基 础 知 识...1 2)Linux 程 序 设 计 入 门 -- 进 程 介 绍...5 3)Linux 程 序 设 计 入

More information

迅速在两个含有大量数据的文件中寻找相同的数据

迅速在两个含有大量数据的文件中寻找相同的数据 迅速在两个含有大量数据的文件中寻找相同的数据 求解问题如下 : 在本地磁盘里面有 file1 和 file2 两个文件, 每一个文件包含 500 万条随机整数 ( 可以重复 ), 最大不超过 2147483648 也就是一个 int 表示范围 要求写程序将两个文件中都含有的整数输出到一个新文件中 要求 : 1. 程序的运行时间不超过 5 秒钟 2. 没有内存泄漏 3. 代码规范, 能要考虑到出错情况

More information

linux操作系统下c语言编程入门

linux操作系统下c语言编程入门 Linux 操作系统 语言编程入门 二次制作版 整理编写 :007xiong 原文 :Hoyt 等二次制作 :AureoLEO MAIL:wangzihao[AT]gmail[DOT]com 制作说明 : 本书版权归原文作者!2005-12-18 QQ:15959622 [2 of 104] 目录 第一章基础知识 4 第二章进程介绍 10 第三章文件操作 17 第四章时间概念 27 第五章信号处理

More information