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