2017-11-18 19:09:20 +03:00
/* SPDX-License-Identifier: LGPL-2.1+ */
2014-06-22 00:07:11 +04:00
/***
This file is part of systemd
Copyright 2014 Ronny Chevalier
systemd is free software ; you can redistribute it and / or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation ; either version 2.1 of the License , or
( at your option ) any later version .
systemd is distributed in the hope that it will be useful , but
WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
Lesser General Public License for more details .
You should have received a copy of the GNU Lesser General Public License
along with systemd ; If not , see < http : //www.gnu.org/licenses/>.
* * */
# include <unistd.h>
# include "async.h"
2015-10-26 20:05:03 +03:00
# include "fileio.h"
2014-06-22 00:07:11 +04:00
# include "macro.h"
2015-10-26 20:05:03 +03:00
# include "util.h"
2014-06-22 00:07:11 +04:00
static bool test_async = false ;
static void * async_func ( void * arg ) {
test_async = true ;
return NULL ;
}
int main ( int argc , char * argv [ ] ) {
int fd ;
char name [ ] = " /tmp/test-asynchronous_close.XXXXXX " ;
2016-09-13 09:20:38 +03:00
fd = mkostemp_safe ( name ) ;
2014-06-22 00:07:11 +04:00
assert_se ( fd > = 0 ) ;
asynchronous_close ( fd ) ;
2015-02-02 22:51:31 +03:00
2014-06-22 00:07:11 +04:00
assert_se ( asynchronous_job ( async_func , NULL ) > = 0 ) ;
2015-02-02 22:51:31 +03:00
2014-06-22 00:07:11 +04:00
assert_se ( asynchronous_sync ( ) > = 0 ) ;
sleep ( 1 ) ;
assert_se ( fcntl ( fd , F_GETFD ) = = - 1 ) ;
assert_se ( test_async ) ;
2014-08-16 16:19:06 +04:00
unlink ( name ) ;
2014-06-22 00:07:11 +04:00
return 0 ;
}