linux 系统上,c++代码如何实现启动一个子进程并在独立的控制台显示
时间: 2024-11-09 20:19:17 浏览: 20
在Linux系统上,使用C++来启动一个子进程并在独立的控制台显示,你可以利用`fork()`和`execvp()`系统调用。下面是一个简单的示例:
```cpp
#include <iostream>
#include <unistd.h> // 包含 fork() 和 execvp()
#include <cstdlib> // 包含 exit()
int main() {
// Fork操作
pid_t pid = fork(); // 创建一个新的子进程
if (pid == 0) { // 子进程
// 执行其他程序,比如ls命令
char* cmd[] = {"ls", "-l", nullptr}; // 指定要执行的命令及其参数
execvp(cmd[0], cmd); // 执行指定的命令
perror("Error executing command"); // 如果执行失败,打印错误信息
exit(1); // 程序退出
} else if (pid > 0) { // 父进程
std::cout << "Child process ID: " << pid << std::endl; // 输出子进程ID
// 父进程继续执行
} else {
std::cerr << "Fork failed with error: " << errno << std::endl;
return -1;
}
return 0;
}
```
在这个例子中,`fork()`创建了一个新的子进程,然后`execvp()`在新进程中替换当前进程并执行指定的`ls -l`命令。由于`execvp()`会阻塞当前进程,所以原进程(父进程)会立即返回,并在控制台上看到子进程的PID。
阅读全文