在Linux系统中,可以使用`fork()`系统调用来创建子进程。以下是一个简单的示例,展示了如何在C语言中编写一个创建子进程的子程序:
```c
include include include include int main() { pid_t pid = fork(); // 创建子进程 if (pid < 0) { // 创建子进程失败 perror("fork error"); exit(EXIT_FAILURE); } else if (pid == 0) { // 子进程 printf("I am the child process, pid: %d\n", getpid()); // 子进程可以执行其他命令 sleep(5); // 让子进程休眠5秒 printf("Child process exiting with status %d\n", 0); exit(0); } else { // 父进程 printf("I am the parent process, pid: %d, ppid: %d\n", getpid(), getppid()); int status; wait(&status); // 等待子进程结束 printf("Child process exited with status %d\n", WEXITSTATUS(status)); } return 0; } ``` 代码解释 `include `include `include `include `pid_t pid = fork();`:调用`fork()`系统调用,创建一个子进程。`fork()`返回两次,一次在父进程中,一次在子进程中。 如果`pid < 0`,表示创建子进程失败,使用`perror()`输出错误信息并退出程序。 如果`pid == 0`,表示当前代码在子进程中,可以执行子进程的代码。 如果`pid > 0`,表示当前代码在父进程中,可以执行父进程的代码。 `printf("I am the child process, pid: %d\n", getpid());`:输出子进程的进程号。 `sleep(5);`:让子进程休眠5秒。 `printf("Child process exiting with status %d\n", 0);`:子进程退出时输出状态码0。 `exit(0);`:子进程正常退出。 `printf("I am the parent process, pid: %d, ppid: %d\n", getpid(), getppid());`:输出父进程的进程号和父进程的进程号。 `wait(&status);`:等待子进程结束,并获取其退出状态。 `printf("Child process exited with status %d\n", WEXITSTATUS(status));`:输出子进程的退出状态。 建议 确保在编写子程序时,正确处理`fork()`的返回值,以便在父进程和子进程中执行不同的代码。 使用`wait()`或`waitpid()`等待子进程结束,以便父进程可以获取子进程的退出状态。 在子进程中,可以使用任何有效的Linux系统调用和库函数来实现所需的功能。包含头文件
创建子进程
子进程代码
父进程代码