首页 > 系统服务 > 详细

linux-系统调用

时间:2016-11-14 16:57:40      阅读:158      评论:0      收藏:0      [点我收藏+]

● Fork()

创建子进程。

创建单个子进程:

pid_t pid;

pid = fork();

if(pid == 0)

{

  printf("I am child, pid=%d. Father pid=%d\n", getpid(), getppid());

}

else if(pid > 0)

{

  printf("I am father, pid=%d. Child pid=%d\n", getpid(), pid);

}

else

{

  printf("failed..\n");

}

pid=0,为子进程;pid>0,为父进程;pid<0为失败。

getpid()返回当前进程pidgetppid()返回父进程pid


循环创建多个进程:

int i;

int pnum = 16;

pid_t pid;

printf("%d\n", getpid());

for (i = 0; i < pnum; i++)

{

  pid = fork();

  if (pid == 0 || pid == -1) break; //如果是子进程,则直接跳出,只允许父进程创建子进程,否则会循环创建。

}


if (pid == -1){

} //failed


//每个子进程都会执行的代码

else if (pid == 0)

{ }

//parent process

else

{}

用这个方法:http://blog.csdn.net/lanmanck/article/details/17892531

可以实现子进程向父进程返回值,但是exit()只能返回小于256的值。

● 直接IO

实现直接IO的方法:

1. fsync(fd)

2. 在用open打开文件的时候,用O_DIRECT标志

fd = open("/mnt/f2fs/test.txt", O_RDWR | O_CREAT | O_DIRECT, 0777))

3. 在用open打开文件的时候,用O_SYNC标志

 

参考:

http://blog.csdn.net/cosa1231116/article/details/6216331

linux-系统调用

原文:http://www.cnblogs.com/volcanorao/p/6062195.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!