execlp 在另一个终端执行
Execlp execute in another terminal
我正在用 C 创建一个应用程序,我必须使用命令 execlp
来执行 firefox,但每次我执行它时我 "lost" 我当前的终端,但是在 execlp
我仍然需要使用以前的终端,所以我的问题是:有没有一种方法可以让我在一个终端调用 execlp
中,它在另一个终端中执行而不会阻塞我所在的终端?
这是我的代码片段:
pid_t child = fork();
if (child == -1) {
perror("fork error");
} else if (child == 0) {
exec_pid = getpid();
execlp("firefox", "firefox", URL, NULL);
perror("exec error");
}
// keep with program logic
如果我没理解错的话,您是说您的程序启动 Firefox,然后保持对 shell 的控制,直到 Firefox 终止。如果是这种情况,有几种解决方法。
最简单的解决方案是 运行 您的程序在后台运行。像 ./my_program &
一样执行它,它会在一个单独的进程中启动,您的终端的控制权将立即返回给您。
如果你想从你的C代码中解决这个问题,第一步是在fork之后打印出子进程的进程ID。在单独的 shell 中,使用 ps
来监控您的程序和分叉的 PID。确保您的程序确实正在终止,而不仅仅是等待某事。
我正在用 C 创建一个应用程序,我必须使用命令 execlp
来执行 firefox,但每次我执行它时我 "lost" 我当前的终端,但是在 execlp
我仍然需要使用以前的终端,所以我的问题是:有没有一种方法可以让我在一个终端调用 execlp
中,它在另一个终端中执行而不会阻塞我所在的终端?
这是我的代码片段:
pid_t child = fork();
if (child == -1) {
perror("fork error");
} else if (child == 0) {
exec_pid = getpid();
execlp("firefox", "firefox", URL, NULL);
perror("exec error");
}
// keep with program logic
如果我没理解错的话,您是说您的程序启动 Firefox,然后保持对 shell 的控制,直到 Firefox 终止。如果是这种情况,有几种解决方法。
最简单的解决方案是 运行 您的程序在后台运行。像 ./my_program &
一样执行它,它会在一个单独的进程中启动,您的终端的控制权将立即返回给您。
如果你想从你的C代码中解决这个问题,第一步是在fork之后打印出子进程的进程ID。在单独的 shell 中,使用 ps
来监控您的程序和分叉的 PID。确保您的程序确实正在终止,而不仅仅是等待某事。