【发布时间】:2015-07-08 12:04:32
【问题描述】:
我在 RPI2 上使用 Raspbian,我尝试从 C 程序创建/更改 SQLite 数据库。
这里有一点代码:
static sqlite3 *db;
static char *zErrMsg = 0;
//....
sqlite3_open(PATH_DATABASE, &db);
char *sql_statement = "CREATE TABLE IF NOT EXISTS myTable (datetime BIGINT, myVal BIGINT)";
sqlite3_exec(db,sql_statement, NULL, NULL, &zErrMsg);
sqlite3_close(db);
作为 IDE,我使用 Eclipse CDT。
在 Eclipse 调试模式下并通过双击执行程序(在“sudo startx”模式下),raspbian 为我创建了一个数据库文件。
如果我通过终端启动程序 (sudo /home/pi/test/myProgram) 无法创建数据库文件。
文件夹“test”和可执行文件“myProgram”都具有 chmod 755 访问权限。 我搜索了很多,没有找到任何对我有帮助的东西。
【问题讨论】:
-
为什么要以 root 身份执行程序(使用 sudo)?
-
sqlite3_open 返回错误代码。检查它是什么。
-
您可以尝试在
strace下运行二进制文件并向我们展示输出吗? -
我为我的具体问题找到了解决方案。如果我使用“cd /home/pi/test”并在“./myProgram”之后它工作(没有sudo)。如果我尝试从“sudo /home/pi/test/myProgram”开始,它仍然无法正常工作。现在我想知道为什么。我认为有一些许可/访问原因。也许你们中的一个人比我聪明,可以解释一下。
-
如果您使用“sudo”,程序可能在不同的目录中运行。或者可能是某些东西阻止了 sqlite3 在以 root 身份运行时打开文件。如上所述,您可能可以通过
strace了解更多信息。