【发布时间】:2018-11-09 05:00:37
【问题描述】:
我有一个 C 程序。我注意到你不能在里面放 2 个 execl。
代码:
#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);
}
如果有办法绕过这个或者我犯了错误,有人可以帮助我吗???
【问题讨论】:
-
如果 execl 成功,它不会返回。永远。
-
显示的代码无法编译。避免使用反斜杠将字符串中的行粘贴在一起。使用字符串连接:相邻的字符串文字被编译器合并为一个,所以
"abc" "-" "def"创建一个单独的字符串"abc-def",即使三个组件字符串在不同的行,中间有空行或cmets,没有任何必要对于任何反斜杠。例如,您可以使用"abc\n" "def\n" "ghi\n"创建三行。 -
为什么要把fork的声明放在本地?
-
@Jonathan Leffler “不编译”是什么意思?
-
@Antti Haapala 感谢您提供信息!我会研究一下,看看我能改进什么! :)