mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-24 22:32:06 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			755 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			755 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #include <AK/String.h>
 | |
| #include <LibCore/Process.h>
 | |
| #include <errno.h>
 | |
| #include <spawn.h>
 | |
| 
 | |
| #ifdef __serenity__
 | |
| #    include <serenity.h>
 | |
| #endif
 | |
| 
 | |
| extern char** environ;
 | |
| 
 | |
| namespace Core {
 | |
| 
 | |
| pid_t Process::spawn(StringView path)
 | |
| {
 | |
|     String path_string = path;
 | |
| 
 | |
|     pid_t pid;
 | |
|     char const* argv[] = { path_string.characters(), nullptr };
 | |
|     if ((errno = posix_spawn(&pid, path_string.characters(), nullptr, nullptr, const_cast<char**>(argv), environ))) {
 | |
|         perror("Process::spawn posix_spawn");
 | |
|     } else {
 | |
| #ifdef __serenity__
 | |
|         if (disown(pid) < 0)
 | |
|             perror("Process::spawn disown");
 | |
| #endif
 | |
|     }
 | |
|     return pid;
 | |
| }
 | |
| 
 | |
| }
 | 
