易截截图软件、单文件、免安装、纯绿色、仅160KB

C Fork 函数

Fork 函数:
#include <unistd.h>
pid_t fork(void);
由fork 创建的新进程被称为子进程。fork 函数被调用两次,但是返回两次。两次返回的唯一区别是子进程的返回值是0,而父进程的返回值则是新子进程的ID。将子进程的ID 返回给父进程的理由是:一个进程可以有多个子进程,并且没有函数是一个进程获得其子进程的进程ID。fork 在子进程中返回0的理由是:一个进程只能有一个父进程,并且可以通过getppid 函数获得其父进程的ID。
子进程和父进程继续执行fork 调用后的指令。子进程是父进程的副本。例如:子进程获得父进程的数据空间、堆和栈的副本。注意这是子进程自己的副本,父、子进程并不共享这些存储空间部分。父、子进程共享正文段。(这里可以参见http://blog.csdn.net/lihe2008125/archive/2010/05/11/5580487.aspx)
例子程序:(仅供参考)
#include "apue.h"
int glob= 6;
char buf[] = "a write to stdout\n";
int main(void){
    int var;
    pid_t pid;
    var = 88;
    if(write(STDOUT_FILENO,buf,sizeof(buf)-1) != sizeof(buf)-1)
         err_sys("fork error");
    printf("before fork\n");
    if((pid = fork()) <0 ){
         err_sys("fork error");
    } else if(pid == 0){
         glob++;
         var++;
    } else {
         sleep(2);
    }
    printf("pid = %d, glob = %d, var = %d\n", getpid(), glob, var);
    exit(0);
}
一般来说,在fork 之后是父进程先执行还是子进程先执行是不确定的。这取决于内核的算法。如果要求父、子进程之间相互同步,则要求某种形式的进程通信。
来自:UNIX 环境高级编程 第2版


相关文档:

C中的空


1.   什么是空指针常量(null pointer constant)?
[ 6.3.2.3-3] An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant.
这里告诉我们:0、0L、'\0'、3 - 3、0 * 17 (它们都是“integer constant expression”)以及 ......

c默认是传值的

在c中,参数默认是传值的,即在参数入栈时被复制一份
。在函数里面修改这些参数,不会影响外面的调用者。
例如
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void get_str(char * p)
{
    p = (char *)malloc(sizeof("abcd"));
    s ......

求解n阶Hanoi塔问题的c函数

#include <stdio.h>
int Count=0;
void move(char x,int n,char z){
 printf(" %d. disk %d: %c => %c\n",++Count,n,x,z);
}//move
// 将塔座x上按直径由小到大且自上而下编号为1至n的n个圆盘按规则搬到塔座z上,y可用作辅助塔座
void Hanoi(int n,char x,char y,char z){
 if (n==1) move(x,1,z ......

C图形编程学习


一、屏幕操作函数
1. clrscr()清除字符窗口函数
2. window()字符窗口函数
3. gotoxy()光标定位函数
4. clreol() 清除光标行尾字符函数
5. insline() 插入空行函数
6. delline() 删除一行函数
7. gettext() 拷进文字函数
8. puttext() 拷出文字函数
9. movetext() 移动文字函数
二、字符属性函数
10. textmode( ......

C输出格式总结

C输出格式总结
2007-07-08 12:09
1 一般格式
   printf(格式控制,输出表列)
   例如:printf("i=%d,ch=%c\n",i,ch);
   说明:
   (1)“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括两种信息:
    &nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号