Articles of 初始化

理解一个C ++程序

我需要你一个小问题的宝贵帮助! 我正在阅读Bjarne Stroustrup的书,我发现这个例子: int main() { string previous = " "; string current; while (cin >> current) { if(previous == current) cout << "repeated word: " << current << '\n'; previous = current; } return 0; } 我的问题是: 什么stringprevious =“”; 做? 它在字符空间之前初始化(就像当你按空格时) 。 但我认为在C ++中它不会读取它,关于编译器跳过空白的东西。 为什么要初始化呢? 我试图写这样的: string previous; 程序仍然正常工作…所以呢? 什么是差异? 请赐教x)

使用memset等结构初始化({…})是否可以吗?

码: WINDOWPLACEMENT wplcmt = {sizeof(WINDOWPLACEMENT)}; 看起来比以下更清洁: WINDOWPLACEMENT wplcmt; memset(&wplcmt, 0, sizeof(WINDOWPLACEMENT)); wplcmt.length = sizeof(WINDOWPLACEMENT); 这个东西的汇编输出也很不错,对于更长的结构,MSVC甚至使用memset而不是xor eax, eax和mov的。 从标准的angular度来看,它也看起来不错。 但是我仍然对结构没有紧密包装的边界情况说#pragma pack(128) ,而windows突然决定做一个memcmp结构。 那么使用这种语法是好还是坏呢? 使用这种初始化是否是好的做法?

如果C尝试扫描整型variables中的字符,会发生什么情况

所以我想知道如果用户input整数variables字符会发生什么,例如: main() { int number; printf("Print a number:"); scanf(" %d", &number); printf("The result is:%d", number); return 0; } 我input了字符,结果是:1986895412 这是1986895412在公羊的地方?

初始化模块在Apache2

我曾经在apache 1.3中编写apache模块,但是现在我愿意传给apache2。 目前我写的模块是自己的二进制数据,而不是数据库,出于性能目的。 我需要将这些数据加载到共享内存中,这样每个孩子都可以在不使用自己的副本的情况下访问它,并且在启动时加载/创build二进制数据是可行的,正如我以前用Apache 1.3所做的那样。 问题是,我没有在apache2中find一个init事件,在模块struct中的1.3中,在STANDARD_MODULE_STUFF之后立即find了一个/ **模块初始化程序* /的地方,在这个地方你可以放一个将被执行的函数。 我用来写的函数体是这样的: if ( getppid == 1 ) { // Load global data here // this is the parent process void* data = loadGlobalData( someFilePath ); setGlobalData( config, data ); } else { // this is the init of a child process // do nothing } 我正在寻找一个地方在apache2在哪里我可以把类似的function。 你能帮我吗? […]

Ubuntu Docker容器与新贵和系统日志

四处搜寻之后,我仍然对是否可以使用一个工作的init系统(upstart)和syslog来运行Ubuntu的docker容器感到困惑。 我知道docker集装箱的意思是运行一个进程,而不是一个完整的操作系统,但我的用例是在各种Linux发行版上testing一个守护进程,确保守护进程启动,停止并成功地在崩溃等重新启动,logging到系统日志。 所以我想决定是否可以使用一个docker集装箱,也许我会更好的与stream浪汉 。 我发现一些资源令人困惑: 容器无法连接到Upstart docker / docker#1024 因为Docker用它自己replace默认的/ sbin / init,所以没有办法在Docker容器中运行Upstart init。 在Docker中使用Supervisor 传统上,Docker容器在启动时运行一个进程,例如Apache守护进程或SSH服务器守护进程。 通常虽然你想在一个容器中运行多个进程。 有多种方法可以实现这一目标,从使用简单的Bash脚本作为容器的CMD指令的值到安装stream程pipe理工具。 所以基本上我最终需要的是能够运行: $ initctl start <daemon> $ initctl stop <daemon> 当然在/etc/init/<daemon>.conf创build必要的conf文件后,用syslog查看syslog 。

切换用户在一个初始化脚本?

这是我的Ubuntu工作站上的Init脚本。 我需要运行一个命令作为另一个用户比根,但我不能让我的头了,应该怎么做。 sudo -u或su newuser似乎都不起作用。 剧本: respawn console none start on runlevel [2345] stop on runlevel [06] script su "anotherUser" -c ./myCommand end script

如何在Ubuntu Linux启动时运行Java应用程序

我有一个要求,我需要开发应用程序,读取TCP / IP套接字。 程序运行后,我成功地将该程序制作成Java程序,无需GUI即可开始监听Socket并在Netbeans IDE的帮助下获得响应。 现在根据我的要求,我必须在Linux系统引导后立即开始执行这个程序。 其实我是Java和Linux平台的新手,所以没有太多的疑问.. 我的没有GUI的Socket程序可以按我的要求运行。 我怎么写脚本在Linux上运行jar启动,我知道了。 init.d是为了这个。

使用gdb在Qemu上debugginginit

我试图模仿在Qemu上的cavium octeon的mips64 linux内核。我目前有使用模式的init代码的一些问题,并且想要debugginginit.i我使用-s -S选项在命令行中启动Qemu并运行gdb命令 ddd –debugger / OCTEON-SDK / tools / bin / mips64-octeon-linux-gnu-gdb /OCTEON-SDK/linux/kernel_2.6/linux/vmlinux 然后用命令附加gdb 目标远程本地主机:1234 gdb目前只显示在内核空间中运行的指令。 我想问的是有什么方法,我可以像在内核空间的情况下一步一步地debugging用户模式初始化和库指令? 例如,如果printf是从init发出的,那么我想看看哪些指令正在库中执行,以及如何将控制权返回给内核?

将Linux引导选项传递给Init

我想通过引导程序在引导时configuration的引导选项将一些parameter passing给定制的Linux init。 我已经在Python和C中编写了testinginit。Python版本能够在内核启动选项中看到没有“=”或“。”的任何内容。 在里面。 这些值在sys.argv中find。 但是,C程序似乎没有通过值。 我原以为Python中的sys.argv列表是通过parsing** argv数组生成的。 下面是testing脚本和屏幕截图,希望有助于澄清。 内核引导线是: kernel /grub/linux-2.6.38.4 root=/dev/vda1 init=/argv-{p|c} one two three four five Python版本: #!/usr/bin/python import sys i = 0 print("Printing argv[] (Python) …") for each in range(i, len(sys.argv)): print("argv[%d] – %s" % (i, sys.argv[i])) i += 1 print("…finished printing argv[]") C版本: #include <stdio.h> int main(int argc, char […]

从Busybox启动Linux(pivot_root或switch_root,或?)

在beaglebone硬件上,我想从一个带有极简主义busybox系统(/ dev / mmcblk0p2)的分区开始,在包含更完整的Linux系统的另外两个分区(/ dev / mmcblk0p5&/ dev / mmcblk0p6)上运行一些检查(Angström ),然后根据这些testing从2个Linux系统中的一个启动。 问题是,我无法find如何从busybox正确启动另一个系统。 我做了什么: 从(完美工作)busybox系统: export PATH=/bin:/sbin:/usr/bin:/usr/sbin mount -t sysfs sysfs /sys mkdir -p /dev/pts mount -t devpts devpts /dev/pts mount /dev/mmcblk0p5 /mnt/root 然后我尝试了两种方法: pivot_root cd /mnt/root pivot_root . ./initrd ./bin/mount -n –move ./initrd/sys ./sys ./bin/mount -n –move ./initrd/proc ./proc ./bin/mount -t devtmpfs none ./dev ./bin/mount […]