由买买提看人间百态

topics

全部话题 - 话题: popen
1 (共1页)
w******g
发帖数: 67
1
来自主题: Programming版 - question about "popen" in C/C++
When I use following code of "popen" to run some shell command in my C++
progarm under Linux, I get the output both on the terminal screen and in the
string variable. How can I ask popen stop putting output on the screen but
only in the string variable. Thanks.
// run the shell command and put the output into string
string FileOperation::runCommand(string command)
{
stringstream msg;
char c;

FILE *output = popen(command.c_str(),"w");
while( (c=fgetc(output))!= EOF )
{
f*******o
发帖数: 88
2
来自主题: Programming版 - 请教一个python下面popen的问题
也许对很多大牛来说是一个比较老的问题,不过对我来说是一个新问题。
起因是想从一个video文件在任意时间点读取图像出来。 最开始是用opencv实现的,在
一些文件上测试也没有问题。后来换了一批h264格式的video文件就有问题了,很多文
件读取不出来。 在网上查了一下后,换成用moviepy来读取。 但是现在有新的问题是
就是moviepy在读取有些video文件在初始化阶段就死锁了。 跟踪进去,发现问题主要
出现在:
s = self.proc.stdout.read(nbytes) 语句时。
这个之前还有一堆初始化的代码, 主要是调用ffmpeg来执行并声称一个pipe.
def initialize(self, starttime=0):
"""Opens the file, creates the pipe. """
self.close() # if any
if starttime != 0 :
offset = min(1, starttime)
i_arg = ['... 阅读全帖
w******g
发帖数: 67
3
来自主题: Programming版 - question about "popen" in C/C++
Even I change it to popen(command.c_str(),"r"),
It still put output on the screen.
g*********s
发帖数: 1782
4
来自主题: Programming版 - 一个popen加gzip的问题
FILE *fp = popen(gzip_file(fileName), "w");
...
gzip_file是这样定义的:
const char* gzip_file(const char* file_name)
{
static sda::string cmd;
cmd = _gzip_path + sda::string(" > ") + sda::string(file_name);
return cmd.c_str();
}
现在传进的参数文件名比较怪异,带空格的,比如"abc def.gz"。这样gzip command变
成了:gzip >abc def.gz。然后gzip报错:gzip: def.gz: No such file or
directory。但是abc文件还是生成了,而且文件指针也返回了。问题在于abc这个文件
根本无法写入,所以后面又出现了fwrite error。
有什么办法第一时间抓住这个gzip错误呢?不许用parser提前分析文件名。
b******n
发帖数: 592
5
来自主题: Programming版 - 一个popen加gzip的问题
为什么不用zlib,很方便的阿..如果用popen, 要用 "gunzip -c xxxx | "吧。
g*****1
发帖数: 998
6
来自主题: Programming版 - where is popen defined?
学习在c++里面用gnuplot画图
我用的vc express 2010,#include
显示identifier popen is undefined
N***m
发帖数: 4460
d*****u
发帖数: 17243
8
来自主题: Programming版 - Python有什么好的方法建two-way pipe?
我找到一个相对简单的办法,贴一下。
自己定义一个class,
read和write代替默认的读写方式
class Pipe(subprocess.Popen):
def __init__(self, argv, timeout = 0):
self.timeout = timeout
subprocess.Popen.__init__(self, argv, stdin = subprocess.PIPE,
stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
def write(self, data):
poll = select.poll()
poll.register(self.stdin.fileno(), select.POLLOUT)
fd = poll.poll(self.timeout)
if len(fd):
f = fd[0]
if f[1] > 0:
... 阅读全帖
c*****m
发帖数: 1160
9
from subprocess import Popen, PIPE, STDOUT
p = Popen(['myapp'], stdout=PIPE, stdin=PIPE, stderr=PIPE)
stdout_data = p.communicate(input='data_to_write')[0]
往 stdin里写
n*******r
发帖数: 60
10
来自主题: Unix版 - Help Bus error
I put a group of Popen command before a function, it is fine.
However, when I put it into a function, it showed always Bus Error
The following is the code
if ((ptr = popen(cmd, "r")) != NULL
{
while (fgets(bufPS, 40, ptr) != NULL)
{
(void) printf("%s", bufPS);
(void) strcat(bufPine,bufPS);
}
pclose(ptr);
}
Help me please!!!
t******i
发帖数: 32
11
来自主题: JobHunting版 - bloomberg测试题,失败阿
记不清楚了, 记得有一个问返回文件长度的函数,
another one:
Which one of the following functions allows an existing stream to be
redirected?
dup, setvbuf, freopen, fopen, popen?
w******1
发帖数: 520
12
来自主题: JobHunting版 - 问道OS的面试题。
GOOGLE 出来的:
fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父
进程, 具有良好的并发性,但是二者之间的通讯需要通过专门的通讯机制,如:pipe
,popen&pclose、协同进程、fifo,System V IPC(消息队列、信号量和共享内存)机
制等, 另外通过fork创建子进程系统开销很大,需要将上面描述的每种资源都复制一
个副本。这样看来,fork是一个 开销十分大的系统调用,这些开销并不是所有的情况
下都是必须的,比如某进程fork出一个子进程后,其子进程仅仅是为了调用exec执行另
一个执行文件,那么在fork过程中对于虚存空间的复制将是一个多余的过程(由 于
Linux中是采取了copy-on-write技术,所以这一步骤的所做的工作只是虚存管理部分的
复制以及页表的创建 ,而并没有包括物理也面的拷贝);
vfork系统调用不同于fork,用vfork创建的子进程共享地址空间,也就是说子进程完全
运行在父进程的地址空间上,子进程对虚拟地址空间任何数据的修改同样为父进程所见
。但是用 vfork创建子进程后,父进程会被阻塞直到子进
d********w
发帖数: 363
13
来自主题: JobHunting版 - 低频题小节
我在面试中,发现还是有时候很难去准备的,听起来也很怪,我就随便列一些我遇到的
低频题给大家看看,有个感觉。
语言细节
1. python yield什么意思,generator,如何操作系统命令popen跟os.system区别
2. 问我API是叫什么,作用是如何把一个path 和文件连起来,path+name,我后来才明
白是说path里面有可能最后没/,path="/ab" , name = "ef"
3. java实现多线程的三种方式
4. java跟c++模板的区别
高级算法
1. 图论:把一个有向图划分成几个区域,每个区域用一中颜色染色,强连通?
分布式理论
2 phase commit是啥
vector clock
一致性hash,分布式hash
数据库
数据如何备份,把mysql导入导出命令给写出来,load data...
信息处理:
如何消重,去除spam
数学
1. reject sampling, 计算期望
linux内核
1. linux的原语是怎么实现的
2. 软练和硬连的区别
3. kill -9 9是什么意思,会不会有些进程永远杀不死
4. ls -l ... 阅读全帖
N*****m
发帖数: 42603
14
还好吧,hup, fin, popen
g***i
发帖数: 4272
15
popen是clib
应该是fork
N*****m
发帖数: 42603
16
fork()也是啊
fork(), system(), popen()都是类似的
g***i
发帖数: 4272
17
Libc里也有
但好像是libc里的fork调用的linux api的sys_fork


: fork()也是啊

: fork(), system(), popen()都是类似的

w*s
发帖数: 7227
18
hi we have complicated multithread code, as most companies do.
Now under stress test we have broken pipe.
How to debug this pls ?
Q1:
if in the popen, pclose case,
http://www.crasseux.com/books/ctutorial/Programming-with-pipes.
if 1 thread is exiting, it can check all opening pipes associating with it,
can it ?
if pipes still open, then wait till the other side finishes,
then exit this thread gracefully
Can this work ?
Q2:
if someone uses pipe();
http://linuxprograms.wordpress.com/2008/02/15/usi... 阅读全帖
m**k
发帖数: 290
19
能用python就别用perl了。
python 里有 subprocess.Popen
per里可以 open FD "| c-prog"
n******t
发帖数: 4406
20
来自主题: Programming版 - 怎样读一个不断更新的文件
popen

program?
w******g
发帖数: 67
21
来自主题: Programming版 - two general C++ question
We know "printf" and "system" are "C" functions. Although we can use them in
C++, I wonder
1.For formatting the output and string, are there similar functions like "
printf" and "sprintf" in C++?
2.For running external program in C++, are there similar functions like "
system" and "popen" in C++?
w*******e
发帖数: 285
22
【 以下文字转载自 Linux 讨论区 】
发信人: windforce (大怪兽), 信区: Linux
标 题: 请问在linux c环境下执行外部命令的问题?
发信站: BBS 未名空间站 (Tue Dec 2 10:59:11 2008), 站内
我想在linux底下执行一个外部程序,然后返回输出结果,现在的问题是有的时候这个
程序会lock住。我想加一个时间限制,如果timeout了就kill掉这个进程。我现在用
popen,但是它的问题就是会无限期的block住。请问有什么好办法能解决这个问题吗?
谢谢了。
w***g
发帖数: 5958
23
我觉得fork和pipe是正道。也可以用popen,但貌似没法同时控制输入和输出。这两个在
windows下貌似都不干活。
最土也是最portable的办法就是先redirect到临时文件再读入。
p***o
发帖数: 1252
24

个在
popen没啥问题
s*******e
发帖数: 664
25
☆─────────────────────────────────────☆
flytomar (撒旦归来) 于 (Mon Nov 23 19:31:10 2009, 美东) 提到:
一直没搞定这个。
另外一个程序,假设名字abc,在同一个路径,有四个参数。
我应该怎么调用它呢?查了google,用execl但是不工作啊
execl(pathname, "abc", arg1, arg2, arg3, arg4, NULL);
是这样用吗?
谢谢
☆─────────────────────────────────────☆
pptwo (pp) 于 (Mon Nov 23 19:34:26 2009, 美东) 提到:
just use system, or popen if you want to write/read stdio

☆─────────────────────────────────────☆
flytomar (撒旦归来) 于 (Mon Nov 23 19:39:09 2009, 美东) 提到:
system 可以调用我自己的pro
w***g
发帖数: 5958
26
来自主题: Programming版 - C++ plotting libary
gnuplot. 可以用popen或干脆临时文件作为接口。这个问题我研究过,找不到更好的。
p***o
发帖数: 1252
27
FILE *fp = popen("gzip -cd your_file", "r");
Then do whatever you want to do as if it is plaintext, e.g. fgets and fscanf
t****t
发帖数: 6806
28
FILE* fp=popen("gzip -cd foo.gz", "r");
/* ... */
pclose(fp);
where do you think perl's pipe form open come from? :)
X****r
发帖数: 3557
29
Yes, I forgot about popen, hehe :)

fscanf
p***o
发帖数: 1252
30
你popen一下lsof?

path?
g*****1
发帖数: 998
31
来自主题: Programming版 - where is popen defined?
thanks
N***m
发帖数: 4460
32
来自主题: Programming版 - where is popen defined?
you are welcome.
If you have time, report your results here since I don't have the
environment
to test it.
w*s
发帖数: 7227
33
【 以下文字转载自 Linux 讨论区 】
发信人: wds (净洗前尘,从头再来), 信区: Linux
标 题: How to debug "broken pipe" in linux programming ?
发信站: BBS 未名空间站 (Wed Dec 21 20:34:08 2011, 美东)
hi we have complicated multithread code, as most companies do.
Now under stress test we have broken pipe.
How to debug this pls ?
Q1:
if in the popen, pclose case,
http://www.crasseux.com/books/ctutorial/Programming-with-pipes.
if 1 thread is exiting, it can check all opening pipes associating with it,
can it ?
if pipes still open, then wait ... 阅读全帖
X****r
发帖数: 3557
34
First, popen creates a new process, not just a new thread.
Second, delay exiting of the child process that reads from
the pipe just masks the underlying problem. What do you do
with these extra data you read in after you're supposed to
exit? If you're going to ignore them, then the parent process
that writes to the pipe should just ignore SIGPIPE and handle
the error in fwrite/fprintf/etc. properly.
y****e
发帖数: 23939
35
来自主题: Programming版 - 问一个Python thread的问题
我的Python程序,用multi-thread作计算。在Linux和MacOS X下都运行很好。但是到了
Windows 7下,运算中间总是Python interpreter crash。我是用subprocess.Popen
launch那个运算函数的。哪位Python高手能指点一下呢,非常感谢。
d****p
发帖数: 685
36
来自主题: Programming版 - 问一个Python thread的问题
Use subprocess.Popen to launch a function? How?
Or you meant launching a process that does the computation?
d**o
发帖数: 864
37
来自主题: Programming版 - python 问题
试试os.popen?
s*********t
发帖数: 1663
38
来自主题: Programming版 - python 问题
subprocess.Popen
f********o
发帖数: 1163
39
来自主题: Programming版 - 在线问一个qsub的问题。
我要qsub一个job到cluster去run,
qsub的是一个python code
在python code里调用了shell命令,os.popen('command1 >& output1; ps').
readlines()
然后我发现,虽然command1已经在运行了,得到的结果里依然没有command1,也就是说
ps没有探测到这个shell命令。
但返回的结果却有这个python的文件名。比方说temp.py
有人知道怎么破吗?有没有办法能在这个python里查看现在已经调用了几个类似于
command1的命令?
PS. 只要不qsub,这个python就可以运行。ps可以探测到command1.
s*****g
发帖数: 219
40
来自主题: Unix版 - CGI之Perl Script一问
在CGI里面使用system(), 关键是环境变量, 权限
和异步的问题. 由于apache使用noname账号执行
CGI, 而你在terminal方式使用的是login账号,
权限, 环境变量不一致.
另外, 据我的记忆, system()是异步方式工作,
即执行system()函数后, 立即返回主程序,
不等待system()调用的命令执行完毕. 所以如果
你要利用 system()调用的结果进行下一步计算,
建议你使用后引号. ` `. 具体说到我的经验,
我一般用 popen 或者 fork 加 exec.
m****r
发帖数: 6639
41
来自主题: Windows版 - 怎样在一个service里面用popen
我的code大概是这样:
FILE *pipe = _popen(cmd.toChars(), "r");
while (!feof(pipe)) {
fgets(s, l, pipe);
// do stuff
}
当我用gcc compile,然后run,fine。
在整个program里面,用vc6。0 compile,当service run,就不行了。
这个应该怎么做?
谢谢
m*****g
发帖数: 54
42
here is the code snippet
cmd = "xxxxxxx"
args = shlex.split(cmd)
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.
STDOUT)
for line in p.stdout.readlines():
print("{0}".format(line.decode("utf-8")[0:len(line)-1]))
k*******g
发帖数: 21
43
非常谢谢!
我用的python是2.6版本,windows平台,这个和os.popen()都能实现对直接exe+参数的
直接调
用,但是对于交互式exe(需要先输入回车,再输入参数(2条RNA序列,用‘&’连接)
,最后输入特
定字符('@')结束),直接加参数,还是调不出结果,不知道应该怎么弄。
大侠们有空请帮忙试试,文件都在如下这个包,谢谢先:)
http://dl.dropbox.com/u/2110716/RNA.rar
其中python script如下,注释部分就是要调的RNAfold.exe;RNAhybrid.exe是测试用。
1 (共1页)