Articles of Linux操作系统

如何使用mysql的连接器

我想使用连接器为MySQL数据库。 我正在关注这个页面 http://dev.mysql.com/tech-resources/articles/mysql-connector-cpp.html 但似乎很难。 还有其他教程吗? 请告诉我。

Linux:在TCP套接字上发送整个消息或不发送消息

我发送各种自定义消息结构下非阻塞TCP套接字。 我想在一个send()调用中发送整个结构,或者如果发送缓冲区中只有部分消息(即send()返回EWOULDBLOCK),则返回一个没有发送字节的错误。 如果没有足够的空间,我会扔掉整个结构并报告溢出,但是我想在这之后可以恢复,也就是说接收者只能接收到一系列有效的完整结构。 有没有办法检查发送缓冲区的可用空间,或者告诉send()调用如上所述? 基于数据报的套接字不是一个选项,必须是基于连接的TCP。 谢谢。

来自socket()调用的错误

我想为我的程序添加IPv6支持,并遇到奇怪的错误。 我想打开接受连接的套接字。 这是我的情况: 首先我使用getaddrinfo()来查找套接字configuration: struct addrinfo hint, *info = NULL; memset((void *)&hint, 0, sizeof(hint)); hint.ai_family = AF_INET6; hint.ai_flags = AI_PASSIVE | AI_NUMERICSERV; hint.ai_socktype = SOCK_STREAM; if ((error = getaddrinfo(NULL, "1234", &hint, &info))) { /* some error handling */ } 我在info产生非NULL结果。 然后我想创build套接字: socket(info->ai_family, info->ai_socktype, info->ai_protocol) 这里我得到-1 strerror(errno) 返回Address family not supported by protocol 我认为getaddrinfo()只返回可以绑定的地址,我期望它在这种情况下返回NULL。 我错过了什么? 我想补充说我的eth0目前没有IPv6地址。 […]

请评论这是否适用于进程和线程之间的通信

一个进程中有几个进程和一些线程。 所有的stream程都需要互相交stream。 一个进程中的线程需要与进程进行通信(主线程)。 我想知道这个devise是否有效: 每个进程都有一个msg队列(使用msgget(),msgsnd,msgrcv()),以便他们可以通过linux API相互交谈。 每个线程都有一个msg队列(也使用msgget,msgsnd,msgrcv),以便它可以与主线程和其他线程交谈。 所以,线程驻留的这个进程将有进程队列和线程的队列,是否有任何问题? 我很担心项目2,因为我学到的是msgget,msgsnd,msgrcv是进程间通信。 我阅读有关这些function的手册。 看起来没有提到这些function是否支持线程。 另外,请你参考一些最好的在线Linux / Unix手册吗? 我不擅长它,因为我觉得很难find我想要的东西,如果一个函数或信号量可以支持线程/手动。 愚蠢的问题, :)。 请帮忙。 谢谢。

通过(f | v | s)scanf函数读取PHP_INT_MAX或接近值

我正在运行64位的Ubuntu Linux。 PHP也是64位的。 我正在尝试使用fscanf从文件中读取整数。 看来fscanf不能扫描超过32位的整数。 看示范波纹pipe。 var_dump( $a = PHP_INT_MAX, –$a, (string)$a, sscanf((string)$a, "%u"), PHP_INT_SIZE ); 产量 int(9223372036854775807) int(9223372036854775806) string(19) "9223372036854775806" array(1) { [0]=> string(10) "4294967294" } int(8) 看,64位整数algorithm的作品! 它只是sscanf函数不工作。 可能是我错过了一个适当的格式 。 我如何使用scanf读取PHP中的64位整数? 格式是什么?

有没有办法可以在Linux上查看真正的进程cmdline?

这里是一个简单的代码来伪造Linux上的进程名称和cmdline: #include <string.h> #include <sys/prctl.h> #include <stdio.h> #include <unistd.h> #define NewName "bash" #define ProcNameMaxLen 16 int main(int argc, char **argv){ int oldlen = strlen(*argv); char procname[ProcNameMaxLen]; memset(*argv, 0, oldlen); memccpy(*argv, NewName, 0, oldlen); //modify cmdline memccpy(procname, NewName, 0, ProcNameMaxLen); prctl(PR_SET_NAME, procname); //modify procname sleep(60); return 0; } 运行这个代码后,我不能通过ps查看真实姓名, 但是可以在/ proc / xxx / exe和/ proc […]

打开连接到USB打印机的钱箱

我有一个钱箱连接到连接到USB端口的Epson TM-T20。 我在这里find了一个例子,并将他们的想法用于从这里到打印机的代码: echo -en "\033\160\040\025" | lp -d "USB_TM-T20" -o raw 但是这似乎不起作用。 由于epson提供了一个java库,所以我决定查看它并反编译。 protected byte[] getOpenDrawerCommand() { byte[] arrayOfByte = new byte[5]; if (this.m_objDrawerPort.isSupportRealTimeCommand()) { arrayOfByte[0] = 16; arrayOfByte[1] = 20; arrayOfByte[2] = 1; arrayOfByte[3] = (byte)this.m_objDrawerSettings.getPinNumber(); // seems to be 0 arrayOfByte[4] = (byte)this.m_objDrawerSettings.getOnTime(true); // between 1 and 8 } else { arrayOfByte[0] […]

哪里是存储您的Smarty模板caching文件的最佳地点?

我正在考虑 /tmp 要么 /var/cache 要么 some folder in your code 我更喜欢temp,因为如果它增长太多,系统通常会照顾它,并且它是普遍可写的,所以可能更便携的代码。 但另一方面,我将不得不将文件存储在任何一个文件夹中,所以创build一个文件夹并检查它是否存在必须在/ tmp上完成,而不是/ var / cache,因为/ var / cache不是很可能被Linux或任何其他types的通用软件删除。 你怎么看? 最佳做法是什么?

快速索引格式为“常量数据库”

我在linux上进行c编程,遇到了一个需要非常快的查找速度的问题。 如果一个表像正常的MySQL表一样,如下所示: ID name age sex score_a score_b score_c date 这是恒定的 ,这意味着一旦创build了该表并且不允许更新。 它只用于阅读。 由于它是不变的,所以我猜想必须有一个更好的索引格式,以便按照条件(如年龄,分数等)快速查找,而不是在大多数索引数据库中实现的“B树索引”。

无法findMBRtypes

我有这个代码是一个项目源的一部分。 该代码findMBRtypes:GRUB或LILO,并相应地设置一个标志。 令人惊讶的是,在SLES 10-SP1(SUSE Linux Enterprise Server)中,无法确定。 /dev/sda1是我的交换。 /dev/sda2是包含MBR在内的整个目录。 相同的代码适用于SLES11等。 这里MBR_SIZE被#defined为0x1be 。 int lnxfsGetBootType(int pNumber) { int i, retval = -1, ccode; PartInfo *p = &cpuParts[pNumber]; char buffer[SECTOR_SIZE]; var64 offset = 0; isdLogFileOut(ZISD_LOG_DEVELOPER,"[lnxGBT]\n"); if (getenv("ZENDEVICE") || gUtilPart == 1) { offset = p->pOffset; // look at the partition BPB } //Now try to find the […]