Articles of pipe理员

计数器循环pipe道grep似乎意外地随机

尝试在5次迭代中让grep停止一个while循环,这样/ tmp / foo应该只有5行: n=1 while [ $n -le 2000 ] do echo $n n=$(( $n + 1 )) done | tee /tmp/foo | grep -q ^5 支票计数: wc -l < /tmp/foo 输出: 34 上面的重复运行每次最多返回不同的数字,但并不是非常随机的 – 在bash中运行5000次以上,例如1500秒左右运行5000次, 短跑运行157次106秒。 这些结果似乎比最初的实验更有趣。 这段代码发生了什么?

如何使用pipeparsing命令的输出

我想处理一个进程的输出,比如ifconfig。 因为你都知道ifconfig的输出是包含inet addr: mask的行的列表:但是我想单独提取ip [来自inet addr:field]并列出它。 有没有可能与pipe道命令? 喜欢 ifconfig | What should be here? 我想把这个命令的输出作为inet addresses列表(如果存在的话,不同的访问点)。

在服务器上设置哪个时区:Etc / UTC或者Etc / Universal?

ubuntu 10.04上提供了两个时区(等/ UTC和等/通用)。 能不能找出哪一个select的Web服务器。 我的理论是Etc / UTC指向特定的时区,而Etc / Universal是语义上指向当前的“基础”时间。 所以通用是select的select。

从共享内存段中读取和写入信号的地方在哪里?

我已经实现了一个基于共享内存模拟pipe()系统调用的库。 现在,当我没有使用任何fork() ,例如没有调用任何subprocess时,代码工作正常。 我的库需要与任何给定的 int main()程序一起工作,所以这里的基本问题是用信号量进行的修改应该在库中进行,而不是在主程序中进行。 图书馆 : 这是图书馆: static int flag = FALSE; static int mutex_init = 0; static pthread_mutex_t lock; #define BUFFER 4096 int my_new_finish() { return 1; // always successful } void error_out(const char *msg) { perror(msg); exit(EXIT_FAILURE); } 现在,当我不使用调用fork() main时,这个库工作正常。 但是,当我使用fork() ,所有地狱刹车松动。 例如 : #include <stdio.h> #include <stdlib.h> int main() { […]

全局或本地线性地址空间在Linux?

在linux中,因为段的基数都是0,所以逻辑地址与线性地址(Book“Understanding the linux kernel”)一致。 我觉得不同进程的逻辑地址可能是一样的,所以不同进程的线性地址可能是一样的,每个进程视图4GB,每个进程都会有自己的线性地址空间(本地地址空间)。 但也有一些文章说,所有进程共享一个很大的线性地址空间,并且使用段机制把不同的进程映射到线性地址空间的不同部分。 听起来像是一个全局线性地址空间,具有更宽的地址位。 我错在哪里? 或者他们在不同的架构中使用?

为什么Linux中的物理内存被分配线性增加而不是一次?

我写了一个如下的程序,一次分配了大约1.2G的内存,我在Linux上testing过。 然后我发现 如果我定义了macros* WRITE_MEM *,则物理内存使用率(由命令顶部检查)将线性增加。 如果我没有定义这个macros,那么物理内存的使用量非常小(大约几百KB),而且不会变大。 我不明白这个现象。 #include <iostream> #include <cmath> #include <cstdlib> using namespace std; float sum = 0.; int main (int argc, char** argv) { float* pf = (float*) malloc(1024*1024*300*4); float* p = pf; for (int i = 0; i < 300; i++) { cout << i << "…" << endl; float* qf […]

pipe道到unistd.h阅读段错误

即时尝试pipe道读取,但它保持在第二次input后segfaulting。 我究竟做错了什么? 提前致谢。 $ ./read < <(python -c 'print "BBA\nBBADD\n",') Please enter your first name: buf= BBA BBA Please enter your last name: buf= Segmentation fault (core dumped) 我附上阅读的代码作为参考,重要的部分是read() //read.c #include <stdio.h> #include <string.h> void prompt_name(char *name, char *msg){ char buf[4096]; puts(msg); read(0, buf, sizeof buf); puts("buf="); puts(buf); *strchr(buf, '\n') = 0; puts(buf); strncpy(name, buf, […]

我可以制作一个包含Vagrant,VirtualBox和其他依赖项的自定义MSI吗?

简介:我想找出一种方法来自动化项目的安装,并将它依赖于Windows(7,8)平台。 特别是我想安装所有需要“依赖”的依赖项,我想把这个分发给我的团队成员。 问题:我已经考虑使用免费软件工具( http://www.advancedinstaller.com/ )来帮助我创build一个MSI。 不过我想现在只能用专门的MSI安装程序下载。 请参阅http://mitchellh.com/abandoning-rubygems 除了需要stream浪者以外,我想自动安装oracle virtualbox,我们需要一些vagrant插件。 我也想包括项目本身。我有一个vagrantfile已经过testing,运作良好。 重新解决问题:换句话说,由于Vagrant似乎只提供Windows的MSI安装程序,所以我不知道是否仍然可以创build包含我想要的其他项目的自定义msi。 如果有可能,我不知道该怎么做。 如果有比使用MSI更好的方法,pease告诉。

Python:给subprocess提供input

我必须使用python脚本创build一个具有pipe理权限的新进程。 我在网上search了这个话题,发现我必须使用runas命令。 对于这个命令,我必须给用户,并在运行时,脚本将等待密码,我想这样做尽可能自动。 这是我的代码: import subprocess p = subprocess.Popen(['runas', '/user:Armando', szCmdCommand], stdin = subprocess.PIPE) p.stdin.write('password') 而不是写。我试过p.communicate(input='password')但它不工作,因为它没有写密码。 发生的唯一情况是脚本不会等待input。 它会自动input一个错误的密码,并且不能执行我的命令。 我能做些什么来解决这个问题?

使用ps的线程

我想检查进程线程对进程RSS,VSZ和SZ值的贡献。 我怎样才能做到这一点。 因为如果我这样做: ps w -eL -o pid,tid,%cpu,cputime,%mem,sz,rss,vsz,command 我得到了tid,但是一个进程的所有线程的所有其他值都是相同的。 我甚至可以用ps做这个吗?