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 Ö®ºóÊǸ¸½ø³ÌÏÈÖ´Ðл¹ÊÇ×Ó½ø³ÌÏÈÖ´ÐÐÊDz»È·¶¨µÄ¡£ÕâÈ¡¾öÓÚÄں˵ÄËã·¨¡£Èç¹ûÒªÇ󸸡¢×Ó½ø³ÌÖ®¼äÏ໥ͬ²½£¬ÔòÒªÇóijÖÖÐÎʽµÄ½ø³ÌͨÐÅ¡£
À´×Ô£ºUNIX »·¾³¸ß¼¶±à³Ì µÚ2°æ
Ïà¹ØÎĵµ£º
±¾ÎĽöÏÞÓÚC£¬Ö÷Òª×Ô¼ºÀÏÍü¡£±ðµÄ·Ï»°ÉÙ˵¡£
1.Basic
Ê×ÏÈ¿¼ÂǺ¯ÊýÔÚº¯ÊýÌåÄڵ͍Ò壬ÈçÏ£º
#include <stdio.h>
#include <stdlib.h>
int main()
{
int add(int,int);
int def(int, int);
printf("%d\n", add(1,3));
printf("%d\n", def(3,1));
  ......
¡¡¡¡Ëã·¨£¨Algorithm£©£º¼ÆËã»ú½âÌâµÄ»ù±¾Ë¼Ïë·½·¨ºÍ²½Öè¡£Ëã·¨µÄÃèÊö£ºÊǶÔÒª½â¾öÒ»¸öÎÊÌâ»òÒªÍê³ÉÒ»ÏîÈÎÎñËù²ÉÈ¡µÄ·½·¨ºÍ²½ÖèµÄÃèÊö£¬°üÀ¨ÐèҪʲôÊý¾Ý£¨ÊäÈëʲôÊý¾Ý¡¢Êä³öʲô½á¹û£©¡¢²ÉÓÃʲô½á¹¹¡¢Ê¹ÓÃʲôÓï¾äÒÔ¼°ÈçºÎ°²ÅÅÕâЩÓï¾äµÈ¡£Í¨³£Ê¹ÓÃ×ÔÈ»ÓïÑÔ¡¢½á¹¹»¯Á÷³Ìͼ¡¢Î±´úÂëµÈÀ´ÃèÊöËã·¨¡£
¡¡¡¡Ò»¡¢¼ÆÊý¡¢ÇóºÍ¡ ......
ÔÚcÖУ¬²ÎÊýĬÈÏÊÇ´«ÖµµÄ£¬¼´ÔÚ²ÎÊýÈëջʱ±»¸´ÖÆÒ»·Ý
¡£ÔÚº¯ÊýÀïÃæÐÞ¸ÄÕâЩ²ÎÊý£¬²»»áÓ°ÏìÍâÃæµÄµ÷ÓÃÕß¡£
ÀýÈç
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void get_str(char * p)
{
p = (char *)malloc(sizeof("abcd"));
s ......
±ê×¼ C I/O
º¯ÊýÁÐ±í£º
clearerr() Çå³ý´íÎó
fclose() ¹Ø±ÕÒ»¸öÎļþ
feof() Èç¹ûµ½´ïÎļþβ(end-of-file)·µ»Ø"True"(Õæ)
ferror() ¼ì²éÒ»¸öÎļþ´íÎó
fflush() ÊéдÊä³ö»º´æµÄÄÚÈÝ
fgetc() ´ÓÁ÷»ñȡһ¸ö×Ö·û
fgetpos() »ñÈ¡ÎļþλÖÃÖ¸Õë
fgets() ´ÓÒ»¸öÁ÷»ñȡһ´®×Ö·û
fopen() ´ò¿ªÒ»¸öÎļþ ......