码迷,mamicode.com
首页 > 其他好文 > 详细

2014025688《嵌入式程序设计》第五周学习总结

时间:2017-05-22 21:29:24      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:waitpid   bsp   stderr   argv   根据   exec函数   结束   err   而不是   

一、标准I/O编程

   标准I/O提供流缓冲的目的是尽可能减少使用read()和write()等系统调用的的数量。标准I/O提供了3中类型的缓冲存储。

1.全缓冲:在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。

2.行缓冲:在这种情况下,当在输入和输出中遇到行结束符时,标准I/O库执行I/O操作。标准输入和标准输出就是使用行缓冲的典型例子。

3.不带缓冲:标准I/O库不对字符进行缓冲。如果用标准I/O函数写若干字符到不带缓冲的流中,则相当于用系统调用write()函数将这些字符全写到被打开的文件上。标准出错stderr通常是不带缓冲的,这就使得出错信息可以尽快显示出来。

二、Linux进程

1.查进程   

    ps命令查找与进程相关的PID号:

    ps a 显示现行终端机下的所有程序,包括其他用户的程序。
    ps -A 显示所有程序。
    ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
    ps -e 此参数的效果和指定"A"参数相同。
    ps e 列出程序时,显示每个程序所使用的环境变量。
    ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
    ps -H 显示树状结构,表示程序间的相互关系。
    ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
    ps s 采用程序信号的格式显示程序状况。
    ps S 列出程序时,包括已中断的子程序资料。
    ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
    ps u 以用户为主的格式来显示程序状况。
    ps x 显示所有程序,不以终端机来区分。

2.杀进程  

   使用kill命令结束进程:kill xxx

   常用:kill -9 324
   Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAME

进程函数fork()

fork函数是程序中的分叉函数。
返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;
否则返回-1。
作用:正在执行的一个进程进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程。
函数原型:pid_t fork( void);

exec族函数

exec函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容。exec函数族的函数执行成功后不会返回,因为调用进程的实体被新的内容取代,只留下进程ID等一些表面上的信息仍保持原样,只有调用失败了才会返回一个-1,从原程序的调用点接着往下执行。

总结遇到的错误:
数组argv和envp忘记用NULL结束,程序会报错误。

exit()函数和_exit()函数

exit()就是退出程序,exit(0)表示正常退出,其他表示非正常退出exit(1)
_exit()用法跟上述一样,但是它们还是有细微的差别的。
exit与_exit的区别
_exit():直接使进程停止运行,清除其使用的内存空间。
exit():在执行退出之前加了若干道工序,在停止进行。
exit()函数在调用exit系统调用之前要检查文件,需要清理I/O缓冲。

waitpid()函数

函数作用:
waitpid()会暂时停止目前进程的执行,直到有信号来到或子进程结束。
函数原型:pid_t waitpid(pid_t pid,int * status,int options)
pid是一个标识符如果pid为-1就等待任何一个子进程,如果pid>0
就是等待pid指定的那个进程结束。
options是一个或多个标致符按位“或”的结果。可以用WNOHANG返回
status是一个int类型指针。

2014025688《嵌入式程序设计》第五周学习总结

标签:waitpid   bsp   stderr   argv   根据   exec函数   结束   err   而不是   

原文地址:http://www.cnblogs.com/kangwenlong/p/6891257.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!