Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

C/C++ÐÞ¸ÄÎı¾Îļþ

mmapÊÇlinuxϵÄCreateFileMapping£¬ÓÃÀ´Ó³É䲢ͬ²½Îļþ¡£
ÕâÑùµÄ»°£¬±ÈÈçÎÒ×Ô¶¨ÒåÒ»ÖÖÎļþ¸ñʽ£¬°ÑËüдÈëµ½ÎļþÖУ¬ÏÖÔÚÏëÐÞ¸ÄÆäÖеÄÖµ£¬¾Í¿ÉÒÔÓÃÕâ¸öº¯Êý£¬°ÑÎļþÓ³Éäµ½ÄÚ´æÖÐ
È»ºóÓòÙ×÷Êý×éµÄ·½Ê½£¬À´½øÐÐÎļþµÄͬ²½¡£Èç¹û²»ÓÃÕâ¸öº¯Êý¾ÍµÃ£º
1¡¢¶¨ÒåÒ»¸ö½á¹¹Ìå
2¡¢¶¨Òå½á¹¹ÌåÊý×é
3¡¢¶ÁÈ¡Îļþ£¨w+£©
4¡¢ÐÞ¸ÄÎļþ
5¡¢Ð´»ØÎļþ
 Èç¹ûÓÃÕâ¸öº¯Êý£¬¾Í²»ÐèÒªÄÇôÂé·³ÁË£º
1¡¢¶¨Òå½á¹¹Ìå
2¡¢¶¨Òå½á¹¹ÌåÖ¸Õë
3¡¢´ò¿ªÎļþ£¬½«Îļþ¾ä±ú´«µÝ¸ømmap½øÐÐÓ³É䣬·µ»ØµÄÊǽṹÌåÊý×é
4¡¢Ð޸IJ¢Ð´»Ø
¾ßÌåµÄ²îÒìÌåÏÖÔÚ»ØÐ´ÉÏ¡£
Ìù¶Î´úÂ룬Àý×ÓÊÇ¡¶linux³ÌÐòÉè¼Æ µÚÈý°æ¡·ÖиøµÄ¡£
#include <unistd.h>
#include <stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdlib.h>
typedef struct
{
int integer;
char string[24];
} RECORD;
#define NRECORDS 100
#define FILENAME ("records.dat")
int main()
{
RECORD record, *mapped;
int i,f;
FILE *fp;
fp = fopen(FILENAME,"w+");
if(!fp)
{
perror("opern file error");
return EXIT_FAILURE;
}
for(i = 0; i < NRECORDS; i++)
{
bzero(&record,sizeof(record));
record.integer = i;
sprintf(record.string,"RECORD-%d",i);
fwrite(&record,sizeof(record),1,fp);
}
fclose(fp);
fp = fopen(FILENAME,"r+");
fseek(fp,43*sizeof(record),SEEK_SET);
fread(&record,sizeof(record),1,fp);
record.integer = 143;
sprintf(record.string,"RECORD-%d",record.integer);
fseek(fp,43*sizeof(record),SEEK_SET);
fwrite(&record,sizeof(record),1,fp);
fclose(fp);
//´ò¿ªÎļþ,¿É¶Á¿Éд
f = open(FILENAME,O_RDWR);
//ÒÔ¹²Ïíģʽmmap£¬Ïê¼ûman mmap
mapped = (RECORD *)mmap(0,NRECORDS * sizeof(record),
PROT_READ | PROT_WRITE,MAP_SHARED,f,0);
//¸Ä±äÆäÖеÄÖµ£¬×Ö·û´®ºÍÊýÖµ
mapped[43].integer = 243;
sprintf(mapped[43].string,"RECORD-%d",mapped[43].integer);
//д»ØÎļþ£¬×îºóÒ»¸ö²ÎÊýÖ¸¶¨ÁËͬ²½¡¢Òì²½¡¢»Ø´«
msync((void *)mapped,NRECORDS * sizeof(record),MS_ASYNC)


Ïà¹ØÎĵµ£º

C/C++º¯ÊýµÄ½è¿Ú¶¨Òå

1¡¢ÔÚCÎļþÖе÷ÓÃC++ÎļþÖж¨ÒåµÄÎļþ
Ö±½ÓµÄ·½·¨ÊÇÔÚC++ ÎļþµÄÍ·²¿Ìí¼ÓÈçÏ´úÂë¶Î£º
extern "C"
{
      int API(int A);
}
2¡¢C++½Ó¿ÚµÄ·½·¨
ÔÚC++Öе÷ÓÃCµÄº¯Êý£¬ÔÚCÍ·ÎļþÖмÓÈëÈçÏ´úÂ룺
#ifdef __cplusplus          // ¿ªÊ¼
exte ......

C/C++ ÓëÔËËãºÍ»òÔËËãת»»´óСд

// & Óë,½«Ö¸¶¨Î»ÖÃÉèÖÃΪ0     | »ò,½«Ö¸¶¨Î»ÖÃÉèÖÃΪ1
//×¢: Ö»Õë¶Ô´¿×ÖĸµÄÇé¿ö
#include <stdio.h>
#include <string>
int main()
{
char str[6] = "xxing";
std::string str1 = "INGXX";
for(int i = 0; i < 5; i++)
{
str[i] &= 0xdf; ......

[C/C++] °ÑÒ»¸öÕûÐÍÕûÊýת³É×Ö·û´®

ÎÊÌâÃèÊö£ºÐ´Ò»¸öº¯Êý£¬½ÓÊÜÒ»¸öÕûÊý£¨¼Ù¶¨ÓÃint±íʾ£©£¬Êä³ö¸ÃÕûÊýµÄ×Ö·û´®ÐÎʽ¡£²ÉÓÃÈçϺ¯ÊýÔ­ÐÍ£º
void itoa ( int val, buf* );
ÕâÀï¼Ù¶¨buf×ã¹»´óÒÔÈÝÄÉÈκÎintÀàÐÍÊýÖµµÄ×Ö·û´®¡£
Õâ¸öÎÊÌ⣬³õ¿´ºÃÏñûÓÐʲôÄѶȡ£Èç¹ûÊÇ0£¬¾ÍÖ±½ÓÊä³ö'0'£»Èç¹ûÊÇÕýÊý£¬¾Íͨ¹ýȡģ(%)ºÍÇóÉÌ(/)ÔËËã¿ÉÒÔÖðλȡµÃ¸ÃÕûÊýµÄÊý×Ö£¬²¢° ......

ÎҵĵÚÒ»個C³Ìʽ

時間²»µÈÈË£¬ÔÚÎÒ還δÀÏȥ֮ǰ£¬Ïë°Ñ丟µôµÄC³ÌÊ½ÖØÐÂÔÙ揀Æð來¡£
Èë門£¬½¨議£¨ÎÒÒ²ÊÇÐÂÊÖ£©²»Òª¿´譚´ó爺µÄ書£¬對ÓÚ20ÊÀ紀學習C語ÑÔ£¬c Primer Plus 5thÎÒ認為ÊÇÒ»個ºÃµÄ選擇¡£
ÎҵĵÚÒ»& ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ