gpt4 book ai didi

c - execlp 在另一个终端执行

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:06 25 4
gpt4 key购买 nike

我正在用 C 语言创建一个应用程序,我必须使用命令 execlp 来执行 firefox,但每次执行它时我都会“丢失”我当前的终端,但是在 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 来监视您的程序和 fork 的 PID。确保您的程序确实正在终止,而不仅仅是等待某事。

关于c - execlp 在另一个终端执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43402791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com