项目中需要查询文件存在情况,所以小记一下。
除了用stat之类函数判断外,还可以用access函数,且后者用起来更简单。
一、用stat时,示例如下:
代码
二、用access函数的例子: 1 int exec_log()
2 {
3 struct stat st;
4 memset(&st,0,sizeof(st));
5 if(!stat("/home/log_url",&st)) //如果log_url不存在,stat就会返回非0
6 {
7 if(st.st_size >= 0) //加了一层保证
8 {
9 int pid=fork();
10 if(!pid)
11 {
12 printf("start ...\n");
13 execl("/home/log_update","/home/log_update",NULL);
14 printf("log_update failed\n");
15 }
16 else if(pid > 0)
17 {
18 return 0;
19 }
20 else
21 {
22 printf("exec log error!\n");
23 }
24 }
25 }
26 return 1;
27 }
28
2 {
3 struct stat st;
4 memset(&st,0,sizeof(st));
5 if(!stat("/home/log_url",&st)) //如果log_url不存在,stat就会返回非0
6 {
7 if(st.st_size >= 0) //加了一层保证
8 {
9 int pid=fork();
10 if(!pid)
11 {
12 printf("start ...\n");
13 execl("/home/log_update","/home/log_update",NULL);
14 printf("log_update failed\n");
15 }
16 else if(pid > 0)
17 {
18 return 0;
19 }
20 else
21 {
22 printf("exec log error!\n");
23 }
24 }
25 }
26 return 1;
27 }
28
代码
1 if ( !access ("/home/log_url", F_OK) )
2 {
3 if(system("/home/log_update") == -1)
4 {
5 printf ("exec log_update failed!\n");
6 }
7 else
8 {
9 printf ("log_url not existed!\n");
10 }
11 }
2 {
3 if(system("/home/log_update") == -1)
4 {
5 printf ("exec log_update failed!\n");
6 }
7 else
8 {
9 printf ("log_url not existed!\n");
10 }
11 }