我正在玩sycalls,并且刚刚按照以下方式编写了代码
/* Clone the process and launch Something */
child_stack = (void *) malloc(max_memory);
args = malloc(2 * sizeof (int **));
args[0] = in_socket_fds;
args[1] = out_socket_fds;
clone(foo, child_stack + max_memory ,CLONE_FILES|CLONE_VM|CLONE_IO|CLONE_FS, (void *) args);
wait();
foo 函数在哪里:
int foo(int** args) {
fprintf(stderr, "Hello world %d %d", args[0][0], ags[1][0]);
_exit(0);
}
我真正想做的是从 foo 函数调用二进制文件。
int foo(int** args) {
system(start program foo)
_exit(0);
}
这个二进制文件应该共享同一个文件描述符表(因此之前使用了克隆)。上面的代码不正确,因为我认为系统不允许共享文件描述符表。(我不想要 fds 的副本,我真的希望能够读/写它们)这些 fds 是套接字。
int foo(int** args) {
system(start program foo)
_exit(0);
}
如何使克隆命令调用二进制而不是函数?(这甚至可能),还是在共享文件描述符时使用系统调用?
谢谢