在C++中創(chuàng)建進程通常使用fork()
函數(shù)來創(chuàng)建一個子進程,然后可以使用exec()
系列函數(shù)來執(zhí)行另一個程序。以下是一個簡單的示例:
#include <iostream>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid < 0) {
std::cerr << "Error creating child process." << std::endl;
return 1;
} else if (pid == 0) {
// Child process
execl("/bin/ls", "ls", "-l", NULL);
} else {
// Parent process
wait(NULL);
std::cout << "Child process completed." << std::endl;
}
return 0;
}
在這個示例中,fork()
函數(shù)將創(chuàng)建一個子進程,并返回子進程的PID。如果fork()
返回值小于0,則表示創(chuàng)建進程失敗。如果返回值為0,則表示當(dāng)前進程是子進程,可以使用execl()
函數(shù)來執(zhí)行/bin/ls
命令。如果返回值大于0,則表示當(dāng)前進程是父進程,它會等待子進程執(zhí)行完畢后輸出一條消息。
需要注意的是,fork()
函數(shù)在父進程和子進程中返回的值是不同的,因此通過判斷返回值來區(qū)分父進程和子進程。同時,在子進程中使用execl()
函數(shù)來執(zhí)行另一個程序時,需要指定要執(zhí)行的程序路徑和參數(shù)列表。