项目中需要查询文件存在情况,所以小记一下。
除了用stat之类函数判断外,还可以用access函数,且后者用起来更简单。
一、用stat时,示例如下:
代码
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
二、用access函数的例子:
代码
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 }