小编adi*_*tya的帖子

信号处理程序是否有可能在"exec"之后存活?

我为进程写了一个信号处理程序,然后fork(),信号处理程序将应用于父进程和子进程.如果我用"exec"替换子进程,则信号处理程序不再存在.

我知道发生这种情况是因为"exec"调用将使用它自己覆盖子进程地址空间.我只是想知道即使在"exec"调用之后是否有办法让信号处理程序工作?

linux signals exec

29
推荐指数
1
解决办法
1万
查看次数

在嵌入式C中使用带有sprintf()的浮点数

大家好,我想知道float变量是否可以在sprintf()函数中使用.

就像,如果我们写:

sprintf(str,"adc_read = %d \n",adc_read);
Run Code Online (Sandbox Code Playgroud)

where adc_read是整数变量,它将存储字符串

"adc_read = 1023 \n"

str(假设 adc_read = 1023)

如何使用float变量代替整数?

c embedded floating-point printf

26
推荐指数
2
解决办法
13万
查看次数

不明原因读取串口块

我正在尝试使用 Linux 下的 termios 框架通过 UART(usbserial)连接非接触式智能卡读卡器。该代码在 PC 上运行良好,但是当我交叉编译并在 ARM9 目标上试用时,它能够打开设备甚至将命令写入设备,但读取命令会无限期地阻塞。这是代码片段:

int mifare_rdr_init(struct mifare_1K * ptr, char *rdr_devnode)
{   
    bzero(ptr, sizeof(struct mifare_1K));           // zero the entire structure
    // open serial device
    int fd = open(rdr_devnode, O_RDWR|O_NOCTTY );
    if (fd == -1) {
    perror("Failed to open serial device ");
    return 1;
    }
    ptr->serialfd = fd;                 // save file descriptor

    ptr->serialdev.c_iflag = 0;                 // no i/p flags
    ptr->serialdev.c_oflag = 0;                 // o/p flags
    ptr->serialdev.c_cflag = ( CS8 | CREAD | B38400 );      // …
Run Code Online (Sandbox Code Playgroud)

linux embedded serial-port embedded-linux termios

5
推荐指数
1
解决办法
4732
查看次数

在QT下打开现有的sqlite3数据库

我是QT和SQLite DBMS的新手.我正在尝试打开在ubuntu Linux下使用"sqlite3"命令行程序创建的现有数据库.我尝试使用以下代码在QT下访问的同一个数据库:

void MainWindow::func()
{
    QSqlQuery query;
    accounts_db = new QSqlDatabase();
    *accounts_db = QSqlDatabase::addDatabase("QSQLITE");
    perror("? ");
accounts_db->setDatabaseName("/home/user/xyz.db");
QSqlError *a = new QSqlError();
*a = accounts_db->lastError();
perror(a->text().toLatin1());
if (!accounts_db->open()) {
    perror("database open error :");
}
if ( !accounts_db->isOpen() ) {
    perror("database is not open");
}
query.exec("select accno,branchcode,fname,lname,curbalance,accdate from accounts");
while(query.next()) {
    QString str = query.value(0).toString();
    std::cerr << qPrintable(str) << std::endl;
}
end:
;
}
Run Code Online (Sandbox Code Playgroud)

这失败,出现以下错误......

No such file or directory
: Invalid argument
QSqlQuery::exec: database not open
Run Code Online (Sandbox Code Playgroud)

请注意,我在adddatabase()之后得到"没有这样的文件或目录",不知道它在说什么文件.还要注意isOpen()和open()返回"true"(???)."数据库未打开"错误来自db.exec()调用(...我想...).

迫切需要指导......

linux sqlite qt

1
推荐指数
1
解决办法
8023
查看次数