网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Linux > 嵌入式系统 > 文章  
ARM的嵌入式Linux移植体验之应用实例
文章来源: 天极开发 文章作者: 宋宝华 发布时间: 2006-08-15   字体: [ ]  
 

  clone

  clone是Linux2.0以后才具备的新功能,它较fork更强(可认为fork是clone要实现的一部分),可以使得创建的子进程共享父进程的资源,并且要使用此函数必须在编译内核时设置clone_actually_works_ok选项。

  clone函数的原型为:

int clone(int (*fn)(void *), void *child_stack, int flags, void *arg);

  此函数返回创建进程的PID,函数中的flags标志用于设置创建子进程时的相关选项。

  来看下面的例子:

int variable, fd;

int do_something() {
 variable = 42;
 close(fd);
 _exit(0);
}

int main(int argc, char *argv[]) {
 void **child_stack;
 char tempch;

 variable = 9;
 fd = open("test.file", O_RDONLY);
 child_stack = (void **) malloc(16384);
 printf("The variable was %d\n", variable);

 clone(do_something, child_stack, CLONE_VM|CLONE_FILES, NULL);
 sleep(1); /* 延时以便子进程完成关闭文件操作、修改变量 */

 printf("The variable is now %d\n", variable);
 if (read(fd, &tempch, 1) < 1) {
  perror("File Read Error");
  exit(1);
 }
 printf("We could read from the file\n");
 return 0;
}

  运行输出:

The variable is now 42
File Read Error

  程序的输出结果告诉我们,子进程将文件关闭并将变量修改(调用clone时用到的CLONE_VM、CLONE_FILES标志将使得变量和文件描述符表被共享),父进程随即就感觉到了,这就是clone的特点。

  sleep

  函数调用sleep可以用来使进程挂起指定的秒数,该函数的原型为:

unsigned int sleep(unsigned int seconds);

  该函数调用使得进程挂起一个指定的时间,如果指定挂起的时间到了,该调用返回0;如果该函数调用被信号所打断,则返回剩余挂起的时间数(指定的时间减去已经挂起的时间)。

  exit

  系统调用exit的功能是终止本进程,其函数原型为:

void _exit(int status);

  _exit会立即终止发出调用的进程,所有属于该进程的文件描述符都关闭。参数status作为退出的状态值返回父进程,在父进程中通过系统调用wait可获得此值。

 
推荐文章
·嵌入式Linux平台的多协议路由器
·恰当选择嵌入式Linux环境下的GUI
·嵌入式Linux系统的MiniGUI研究和
·基于Linux的移动电话开发技术及
·嵌入式uClinux的内核结构和开发
·基于 GTK+ 和 X-window 的 GUI
·基于Qt/Embedded和Qtopia的GUI设
·恰当选择嵌入式Linux环境下的GUI
·ARM的嵌入式Linux移植体验之操作
·ARM的嵌入式Linux移植体验之基本
·ARM的嵌入式Linux移植体验之设备
·ARM的嵌入式Linux移植体验之Boot
·嵌入式Linux系统中的GUI系统的研
·QTE/Qtopia在Liod-270上的移植
 
 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·ARM的嵌入式Linux移植体
·U-Boot简介
·基于Qt/Embedded的GUI移
·基于Qt/Embedded和Qtopi
·U-BOOT的启动流程及移植
·ARM的嵌入式Linux移植体
·几种Linux嵌入式开发环
·ARM的嵌入式Linux移植体
相关文章
·ARM的嵌入式Linux移植体
·ARM的嵌入式Linux移植体
·ARM的嵌入式Linux移植体
·ARM的嵌入式Linux移植体
·Linux设备驱动编程之阻
·Linux桌面应用与Windows
·Linux设备驱动编程之中
·关于Linux系统安全管理
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统