在 C linux 中创建子进程
Creating child process in C linux
使用fork()
函数创建子进程。
父进程 运行s 通过 execl()
函数更改进程的内容 运行 cat f1.c
命令。
子进程 运行 是一个 traceroute www.google.com
命令。
在此处提问之前,请先自行尝试并 post 到目前为止您尝试过的内容,以便我们引导您朝着正确的方向前进。另外,如果您能更加努力地提出更好的问题,那就太好了。但是给你一些指导:
您可以使用fork 创建子进程。它 returns 一个整数。如果它为零,则表示您处于子进程中。所以你可以这样做:
int pid;
if((pid=fork())==0){
// you are in child process
//use execl(constant char *path, constant char *commands); to run your commands
}
else {
//whatever you need to do in the parent process
}
您可以在此处找到有关 execl() 的信息:https://www.systutorials.com/docs/linux/man/3-execl/ 它基本上是 运行 命令的一种方式。第一个参数是一个常量 char 指针,它指向您想要 运行 中命令的 shell(“/bin/sh”等)。下一个参数是它自己的命令("cd"、"mydir" 等)以 null 终止。
execl("/bin/sh","cd","mydir",NULL);
使用fork()
函数创建子进程。
父进程 运行s 通过 execl()
函数更改进程的内容 运行 cat f1.c
命令。
子进程 运行 是一个 traceroute www.google.com
命令。
在此处提问之前,请先自行尝试并 post 到目前为止您尝试过的内容,以便我们引导您朝着正确的方向前进。另外,如果您能更加努力地提出更好的问题,那就太好了。但是给你一些指导:
您可以使用fork 创建子进程。它 returns 一个整数。如果它为零,则表示您处于子进程中。所以你可以这样做:
int pid;
if((pid=fork())==0){
// you are in child process
//use execl(constant char *path, constant char *commands); to run your commands
}
else {
//whatever you need to do in the parent process
}
您可以在此处找到有关 execl() 的信息:https://www.systutorials.com/docs/linux/man/3-execl/ 它基本上是 运行 命令的一种方式。第一个参数是一个常量 char 指针,它指向您想要 运行 中命令的 shell(“/bin/sh”等)。下一个参数是它自己的命令("cd"、"mydir" 等)以 null 终止。
execl("/bin/sh","cd","mydir",NULL);