Use posix_spawn and wait4 in libc
This commit is contained in:
		
							parent
							
								
									c00fddd2bf
								
							
						
					
					
						commit
						98b4508a0d
					
				| @ -1,19 +1,21 @@ | |||||||
| #include <sys/syscall.h> | #include <sys/syscall.h> | ||||||
|  | #include <sys/wait.h> | ||||||
| #include <unistd.h> | #include <unistd.h> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
|  | #include <spawn.h> | ||||||
| 
 | 
 | ||||||
| int main(void) { | int main(void) { | ||||||
|     int ret, child_pid, status; |     int ret, child_pid, status; | ||||||
|     printf("Run a parent process has pid = %d and ppid = %d\n", getpid(), getppid()); |     printf("Run a parent process has pid = %d and ppid = %d\n", getpid(), getppid()); | ||||||
| 
 | 
 | ||||||
|     ret = syscall(__NR_spawn, &child_pid, "getpid/bin.encrypted", NULL, NULL); |     ret = posix_spawn(&child_pid, "getpid/bin.encrypted", NULL, NULL, NULL, NULL); | ||||||
|     if (ret < 0) { |     if (ret < 0) { | ||||||
|         printf("ERROR: failed to spawn a child process\n"); |         printf("ERROR: failed to spawn a child process\n"); | ||||||
|         return -1; |         return -1; | ||||||
|     } |     } | ||||||
|     printf("Spawn a new proces successfully (pid = %d)\n", child_pid); |     printf("Spawn a new proces successfully (pid = %d)\n", child_pid); | ||||||
| 
 | 
 | ||||||
|     ret = syscall(__NR_wait4, -1, &status, 0); |     ret = wait4(-1, &status, 0, NULL); | ||||||
|     if (ret < 0) { |     if (ret < 0) { | ||||||
|         printf("ERROR: failed to wait4 the child process\n"); |         printf("ERROR: failed to wait4 the child process\n"); | ||||||
|         return -1; |         return -1; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user