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

LinuxÏÂµÄ¶à½ø³Ì¼ä¹²Ïí×ÊÔ´µÄ»¥³â·ÃÎÊ

°ÑÔ´´úÂëÔËÐÐÒ»±é¾ÍÖªµÀÁË
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <pthread.h>
pthread_mutex_t* g_mutex;
//´´½¨¹²ÏíµÄmutex
void init_mutex(void)
{
int ret;
//g_mutexÒ»¶¨ÒªÊǽø³Ì¼ä¿ÉÒÔ¹²ÏíµÄ£¬·ñÔòÎÞ·¨´ïµ½½ø³Ì¼ä»¥³â
g_mutex=(pthread_mutex_t*)mmap(NULL, sizeof(pthread_mutex_t), PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0);
if( MAP_FAILED==g_mutex )
{
perror("mmap");
exit(1);
}

//ÉèÖÃattrµÄÊôÐÔ
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
//Ò»¶¨ÒªÉèÖÃΪPTHREAD_PROCESS_SHARED
//¾ßÌå¿ÉÒԲο¼http://blog.chinaunix.net/u/22935/showart_340408.html
ret=pthread_mutexattr_setpshared(&attr,PTHREAD_PROCESS_SHARED);
if( ret!=0 )
{
perror("init_mutex pthread_mutexattr_setpshared");
exit(1);
}
pthread_mutex_init(g_mutex, &attr);
}
int main(int argc, char *argv[])
{
init_mutex();
int ret;
char str1[]="this is child process\r\n";
char str2[]="this is father process\r\n";
int fd=open("tmp", O_RDWR|O_CREAT|O_TRUNC, 0666);
if( -1==fd )
{
perror("open");
exit(1);
}
pid_t pid;
pid=fork();
if( pid<0 )
{
perror("fork");
exit(1);
}
else if( 0==pid )
{
ret=pthread_mutex_lock(g_mutex);
if( ret!=0 )
{
perror("child pthread_mutex_lock");
}
sleep(10);//²âÊÔÊÇ·ñÄܹ»×èÖ¹¸¸½ø³ÌµÄдÈë
write(fd, str1, sizeof(str1));
ret=pthread_mutex_unlock(g_mutex);
if( ret!=0 )
{
perror("child pthread_mutex_unlock");
}
}
else
{
sleep(2);//±£Ö¤×Ó½ø³ÌÏÈÖ´ÐÐ
ret=pthread_mutex_lock(g_mutex);
if( ret!=0 )
{
perror("father pthread_mutex_lock");
}
write(fd, str2, sizeof(str2));
ret=pthread_mutex_unlock(g_mutex);
if( ret!=0 )
{
perror("father pthread_mutex_unlock");
}
}


Ïà¹ØÎĵµ£º

linux cat echo cal date clearÃüÁî

cat ÃüÁî
ʹÓ÷½Ê½£ºcat [-AbeEnstTuv] [--help] [--version] fileName
˵Ã÷£º°Ñµµ°¸´®Á¬
½Óºó´«µ½»ù±¾Êä³ö£¨Ó©Ä»»ò¼Ó > fileName µ½ÁíÒ»¸öµµ°¸£©
²ÎÊý£º
-n »ò --number ÓÉ 1
¿ªÊ¼¶ÔËùÓÐÊä³öµÄÐÐÊý±àºÅ
-b »ò --number-nonblank ºÍ -n ÏàËÆ£¬Ö»²»¹ý¶ÔÓÚ¿Õ°×Ðв»±àºÅ
-s »ò
--squeeze-blank µ±Óöµ½ÓÐÁ¬Ð ......

linuxÉ豸Çý¶¯ IO Port

1. I/O Port
¡¡¡¡ºÍÓ²¼þ
´ò½»µÀÀë²»¿ªI/O Port
£¬ÀϵÄ
ISA
É豸¾­³£ÊÇÕ¼ÓÃʵ¼ÊµÄ
I/O
¶Ë¿Ú£¬ÔÚ
linux
Ï£¬²Ù×÷
ϵͳûÓжÔ
I/O
¿ÚÆÁ±Î£¬Ò²¾ÍÊÇ˵£¬ÈκÎÇý¶¯³ÌÐò¶¼¿É¶ÔÈÎÒâµÄ
I/O
¿Ú²Ù×÷£¬ÕâÑù
¾ÍºÜÈÝÒ×ÒýÆð»ìÂÒ¡£Ã¿¸öÇý¶¯³ÌÐòÓ¦¸Ã×Ô¼º±ÜÃâÎóÓö˿ڡ£ 
¡¡¡¡ÓÐÁ½¸ö
ÖØÒªµÄkernel
º¯Êý ......

gpio linux ʵÏÖÄ£ÐÍ

 Ô­ÎĵØÖ·£ºhttp://lhsblog01.blog.163.com/blog/static/1020045192010221104237126/
     
       GPIOÊÇÓëÓ²¼þÌåϵÃÜÇÐÏà¹ØµÄ£¬linuxÌṩһ¸öÄ£ÐÍÀ´ÈÃÇý¶¯Í³Ò»´¦ÀíGPIO£¬¼´¸÷¸ö°å¿¨¶¼ÓÐʵÏÖ×Ô¼ºµÄgpio_chip¿ØÖÆÄ£¿é£ºrequest, free, input,output, get,set,i ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ