⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 autosd.c

📁 sd卡程序
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/select.h> 
#include <sys/time.h> 
#include <sys/wait.h>
#include <sys/stat.h>
#include <string.h>
#include <signal.h>
#include <sys/param.h>
#include <errno.h>


//#define DEBUG

static int deamon_init(void)//鍒涘缓甯搁┗杩涚▼
{
	pid_t	pid;
	int	i;
	int	maxopen;
	if((pid = fork())<0){
		printf("fork error \n");
		exit(-1);
	}
	if (pid != 0)
		exit(0);
	setsid();
	//chdir("/tmp");
	umask(0);	
	maxopen = sysconf(_SC_OPEN_MAX);
	if (maxopen <0){
		printf("sysconf error !\n");
		exit(-2);
	}

	for (i=0; i<maxopen; i++)
		close(i);	
	return 0;
}

int main()
{
	static char flag=0;
	int sddev; 
	int i; 
	char buf[1]={0};
#ifndef DEBUG
	if (deamon_init() != 0)
		exit(-1);
#endif
	mknod("/dev/gpio_g10", S_IFCHR, 0xfc00);	
	sddev = open("/dev/gpio_g10",O_RDONLY); 
	
	if ( sddev == -1 ) 
	{ 
		printf("Cann't open file \n"); 
		exit(0); 
	} 
	for (;;) 
	{ 
       	fd_set rds; 
         	int ret; 
         	FD_ZERO(&rds); 
         	FD_SET(sddev, &rds); 
     /*使用系统调用select检查是否能够从/dev/gpio_g10设备读取数据*/ 
         	ret  =  select(sddev + 1, &rds, NULL, NULL, NULL); 
   /*读取出错则退出程序*/ 
         	if (ret < 0) 
		{ 
	      		perror("select");    
             		exit(1); 
             } 
         	if (ret == 0) 
		{ 
          		printf("Timeout.\n"); 
       	}
   	/*能够读取到数据*/ 
       	else if (FD_ISSET(sddev, &rds)) 
		{  	 
               	int ret = read(sddev, &buf, 1);                    	
			if(ret<0)
			
			
               }      
           } 

	/*while(1)
	{
		sleep(1);
		read(testdev,buf,1);
		if(buf[0]==0 && flag==0)
		{
			system("./sdinmod");
			flag=1;
		}
		if(buf[0]==1 && flag==1)
		{
			system("./sdunmod");
			flag=0;
		}

        }*/

	close(sddev);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -