1 /* 2 * Copyright (c) 2018 Cyril Hrubis <chrubis (at) suse.cz> 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License as 6 * published by the Free Software Foundation; either version 2 of 7 * the License, or (at your option) any later version. 8 * 9 * This program is distributed in the hope that it would be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write the Free Software Foundation, 16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 17 */ 18 19 /* 20 * Assert that tst_res() from child started by exec() is propagated to the main 21 * test process. 22 * 23 * This test should be executed as: 24 * $ PATH=$PATH:$PWD ./test_exec 25 */ 26 27 #define _GNU_SOURCE 28 #include <unistd.h> 29 #include "tst_test.h" 30 31 static void do_test(void) 32 { 33 char *const argv[] = {"test_exec_child", NULL}; 34 char path[4096]; 35 36 if (tst_get_path("test_exec_child", path, sizeof(path))) 37 tst_brk(TCONF, "Couldn't find test_exec_child in $PATH"); 38 39 execve(path, argv, environ); 40 41 tst_res(TBROK | TERRNO, "EXEC!"); 42 } 43 44 static struct tst_test test = { 45 .test_all = do_test, 46 .child_needs_reinit = 1, 47 }; 48