我有一个C程序。我注意到你不能在里面放两个高管
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t fork(void);
int system(const char *command);
execl("/bin/sh", "sh", "-c", "kdialog --warningcontinuecancel
"Make sure to include: n n 1. py_lcd folder n 2. 4x20
Raspberry Pi LCD Display n 3. Python 2.7.12 to be installed n
n If you are missing something, kill the program process and
get them."", (char *) 0);
sleep(1);
execl("/bin/sh", "sh", "-c", "kdialog --msgbox "Setting up files..." --title "Installing..."", (char *) 0);
return(0);
}
如果有办法绕过这一点,或者我犯了一个错误,有人能帮我吗???
exec
函数族在成功时不会返回。它们将运行的进程替换为exec
d。如果您想在子进程中运行程序(与system
不同,具有完全控制(,则需要使用fork
+exec
+wait
(或posix_spawn
(。
execl之后写的任何东西都是死代码。execl的主要目的是为新进程重用当前进程信息,以提高性能。您将使用共享执行execl的当前进程的进程信息结构(pid、堆栈、堆等(。
我自己找到了答案。有一个system((命令的工作原理完全相同,但您可以将其插入代码中的任何位置,而不会出现问题